- 问题背景
- 解决方法
- 附
- 后言
- END
之前看到公司的框架的文件上传功能,想自己也做一个,但自己的工程死活都无法在swagger里显示选择文件的按钮。这是之前的代码,很简洁。但死活无法显示按钮。
@PostMapping(value = "/video", consumes = "multipart/form-data")
@ApiOperation("上传视频")
@ApiOperationSupport(order = 1)
@ApiImplicitParams({@ApiImplicitParam(name = "file",
value = "文件对象",
dataType = "MultipartFile",
required = true,
allowMultiple = true)})
public ApiResult video(@NotNull(message = "文件不能为空") MultipartFile file) {
uploadService.video(file, "video");
return ApiResult.success();
}
解决方法进入的请求参数是这个样子
前几天在CSDN中无意发现了多文件上传,居然有按钮,于是我灵光一闪:可不可以换一种方法,使用这种多文件上传,但就只需要获取到第一个就好了呢?于是乎,一个优化的代码就形成了:
@PostMapping(value = "/video")
@ApiOperation("上传视频")
@ApiOperationSupport(order = 1)
@ApiImplicitParam(value = "上传视频",
name = "file",
value = "文件对象",
dataType = "MultipartFile",
required = true,
allowMultiple = true)
public ApiResult video(
@RequestParam("file")
@NotNull(message = "文件不能为空")
MultipartFile[] file) {
UploadVideoVO vo = uploadService.video(file[0], "video");
return ApiResult.success(vo);
}
主要的变化是在参数里,以前的是单个文件,后来是一个数组,但在方法里只传入第一个文件。
而这时swagger里是这样显示的
弄了我两个月的文件上传就这样被我解决了。其实只要换一种思路,问题就解决了!!!!
附版本如下
后言org.springframework.boot spring-boot-starter-parent 2.3.9.RELEASE com.github.xiaoymin knife4j-micro-spring-boot-starter 2.0.8 com.github.xiaoymin knife4j-spring-boot-starter 2.0.8 io.springfox springfox-swagger2 3.0.0
不忘初心,牢记使命。
让我们携手,互帮互助,取长补短,一起朝各自的目标奋力迈进!!!
由衷感谢您的观看,您的收获和支持就是我的最大动力!!再次感谢!!
END


