769 Star 6.6K Fork 1.4K

GVP萧明 / knife4j

 / 详情

请求参数为List<MultipartFile>或MultipartFile[]时,调试页面不能添加多个item项

已完成
创建于  
2021-10-22 23:26

一、knife4j版本

<knife4j.version>3.0.3</knife4j.version>

<!--接口文档knife4j begin-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>${knife4j.version}</version>
</dependency>
<!--接口文档knife4j end-->

Spingboot版本2.5.5

二、Controller请求参数

场景1:请求参数为List,使用@RequestPart注解
输入图片说明

文档调试页面:
输入图片说明

场景2:请求参数为MultipartFile[],使用@RequestPart注解
输入图片说明

文档调试页面:
输入图片说明

场景3:场景1 + @ApiImplicitParams及@ApiImplicitParam注解
输入图片说明
@ApiImplicitParam不同参数:
输入图片说明

输入图片说明

输入图片说明

文档调试页面结果都是:
输入图片说明

场景4:场景3 + @ApiImplicitParams及@ApiImplicitParam注解
结果与场景3中一样

把MultipartFile换成其他类型的也无法在调试页面选择多项。请问如何解决?
希望的效果:类似swagger中的这样
输入图片说明

评论 (3)

Gangbb 创建了任务
Gangbb 修改了描述
Gangbb 修改了描述
展开全部操作日志

感谢反馈

目前有个解决方案:

  1. 版本降到2.0.9

2.controller:
输入图片说明

3.开启增强模式,配置文件开启动态调试

knife4j:
  # 开启增强配置
  enable: true
  setting:
    # 是否开启动态参数调试功能,默认关闭
    enableDynamicParameter: true
  1. 效果
    输入图片说明
萧明 添加了
 
feature
标签
萧明 添加了
 
enhancement
标签
萧明 里程碑设置为Knife4j 2.1.0版本

可以设置多个,knife4j的处理方式是,虽然是一个文件,但是按住Ctrl键,可以选择多个文件进行上传,代码如下:

@ApiOperation(value = "多文件上传")
@ApiImplicitParam(name = "files",value = "文件",dataType = "MultipartFile",allowMultiple = true)
@PostMapping("/uploadBatch")
public ResponseEntity<List<String>> uploadBatch(@RequestParam("files") List<MultipartFile> files){
    List<String> fileResps=new ArrayList<>();
    for (MultipartFile file:files){
        fileResps.add(file.getOriginalFilename());
    }
    return ResponseEntity.ok(fileResps);
}
萧明 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
118100 xiaoym 1578918321
Java
1
https://gitee.com/xiaoym/knife4j.git
git@gitee.com:xiaoym/knife4j.git
xiaoym
knife4j
knife4j

搜索帮助

344bd9b3 5694891 D2dac590 5694891