springboot+knife4j+swagger3文件上传域出不来
springboot+knife4j+swagger3文件上传域出不来
·
1 问题现象
springboot、knife4j、swagger3整合后,swagger上文件上传接口的上传域出不来,无法进行调试,代码如下:
@PostMapping(value = "/upload")
@ApiOperation(value = "文件上传接口", notes = "文件上传接口")
public ApiResult<UploadInfoVo> upload(MultipartFile uploadFile) throws Exception {
return ApiResult.ok();
}
swagger页面没有任何参数信息:

2 解决方式
可以使用@RequestPart注解,如下:
@PostMapping(value = "/upload")
@ApiOperation(value = "文件上传接口", notes = "文件上传接口")
public ApiResult<UploadInfoVo> upload(@RequestPart("uploadFile") MultipartFile uploadFile) throws Exception {
return ApiResult.ok();
}
swagger中页面如下,调试页面的上传域已经出来了:

如果想要添加@ApiImplicitParam注解,经尝试,必须设置dataTypeClass才可以生效。代码如下:
@PostMapping(value = "/upload")
@ApiOperation(value = "文件上传接口", notes = "文件上传接口")
@ApiImplicitParam(name = "uploadFile", value = "上传的文件", dataType = "_File", dataTypeClass = MultipartFile.class, required = true)
public ApiResult<UploadInfoVo> upload(@RequestPart("uploadFile") MultipartFile uploadFile) throws Exception {
return ApiResult.ok();
}
swagger页面如下:

3 失败案例
以下为部分不生效的案例,以下案例中swagger的调试页面无任何参数信息:
@PostMapping(value = "/upload", headers = "Content-Type=multipart/form-data")
@ApiOperation(value = "文件上传接口", notes = "文件上传接口")
public ApiResult<UploadInfoVo> upload(@RequestParam("uploadFile") MultipartFile uploadFile) throws Exception {
return ApiResult.ok();
}
@PostMapping(value = "/upload", headers = "Content-Type=multipart/form-data")
@ApiOperation(value = "文件上传接口", notes = "文件上传接口")
@ApiImplicitParam(name = "uploadFile", value = "上传的文件", dataType = "_File", required = true, paramType = "query")
public ApiResult<UploadInfoVo> upload(@RequestParam("uploadFile") MultipartFile uploadFile) throws Exception {
return ApiResult.ok();
}
@PostMapping(value = "/upload")
@ApiOperation(value = "文件上传接口", notes = "文件上传接口")
@ApiImplicitParam(name = "uploadFile", value = "上传的文件", dataType = "_File", required = true, paramType = "query")
public ApiResult<UploadInfoVo> upload(@RequestParam("uploadFile") MultipartFile uploadFile) throws Exception {
return ApiResult.ok();
}
以下案例虽然上传文件请求参数可以显示出来,但是不显示选择文件的按钮:
@PostMapping(value = "/upload", headers = "Content-Type=multipart/form-data", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
@ApiOperation(value = "文件上传接口", notes = "文件上传接口")
@SysLog(value = "文件上传", type = LogTypeEnum.UPLOAD)
@ApiImplicitParam(name = "uploadFile", value = "上传的文件", dataType = "File", required = true, paramType = "query")
public ApiResult<UploadInfoVo> upload(@RequestPart("uploadFile") MultipartFile uploadFile) throws Exception {
return ApiResult.ok();
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)