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页面没有任何参数信息:
image.png
image.png

2 解决方式

可以使用@RequestPart注解,如下:

    @PostMapping(value = "/upload")
    @ApiOperation(value = "文件上传接口", notes = "文件上传接口")
    public ApiResult<UploadInfoVo> upload(@RequestPart("uploadFile") MultipartFile uploadFile) throws Exception {
        return ApiResult.ok();
    }

swagger中页面如下,调试页面的上传域已经出来了:
image.png
image.png

如果想要添加@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页面如下:
image.png
image.png

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();
    }

image.png

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值