使用swagger2调试接口时,发现参数是数组时,会有问题。
没有问题的情况,如下:
@PostMapping("/list/str") public ReturnDTO testStr(@RequestParam String[] files){ return ReturnDTOUtil.success(); }
接收String类型的数组,页面上输入string类型数组,没有问题,后台可以接收处理。
但是上传的类型变为multipartfile的数组时,如下:
@PostMapping("/list/pictures") public ReturnDTO testPictures(@RequestParam("files") MultipartFile[] files, @RequestParam("pic_Name") String pic_Name){ for (int i = 0; i < files.length; i++) { String fileName = files[i].getOriginalFilename(); //图片名字 String fileStr = fileName.substring(fileName.lastIndexOf("\\")+1,fileName.length()); String filePath = "G:test/picture/"+fileStr; FileUtils.saveFileToDisk(files[i],filePath); } return ReturnDTOUtil.success(); }
后台无法收,并报错:
而在页面上直接使用form表单直接上传时,却是可以的,代码如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2>上传多个文件 实例</h2> <form action="/api/upload/list/pictures" method="post" enctype="multipart/form-data"> <p>选择文件:<input type="file" name="files"></p> <p>选择文件:<input type="file" name="files"></p> <p><input type="submit" value="提交"></p> </form> </body> </html>
而使用multipartfile的单对象传递时,没有问题; 对比单文件与多文件时,发现浏览器中请求
单文件:
多文件:
在多文件传给后台时,后台无法识别。
是不是这个类型导致后台无法识别,如果是的话,那这是不是swagger2中的一个bug呢?