我正在使用 Spring boot 2.0.1,我正在尝试使用 dropzone 上传多个文件。当我使用时一切都工作正常uploadMultiple: false
on Dropzone.js
。当我设置uploadMultiple: true
,我的控制器停止工作。
控制器类如下:
@PostMapping(value = "/img/upload")
public ResponseEntity<?> fileUpload(@RequestParam("file") MultipartFile[] files){
System.out.println(files.length);
for (MultipartFile file : files) {
try {
file.transferTo(new File("/opt/img/" + file.getOriginalFilename()));
System.out.println(file.getOriginalFilename());
} catch (IOException e) {
e.printStackTrace();
}
}
return new ResponseEntity<>("File Uploaded Successfully.", HttpStatus.OK);
}
文件不超过1MB,我的设置是
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
我上传文件时的请求标头:
------WebKitFormBoundaryihPcX9WHR5UA9jGD
Content-Disposition: form-data; name="file[0]"; filename="cars-02-01.png"
Content-Type: image/png
------WebKitFormBoundaryihPcX9WHR5UA9jGD
Content-Disposition: form-data; name="file[1]"; filename="Screenshot from 2018-05-03 23-31-53.jpg"
Content-Type: image/jpeg
一切看起来都很完美。我还是找不到这个问题的原因?
看来我应该使用MultipartHttpServletRequest
代替MultipartFile[] files
。我将方法更改为:
@PostMapping(value = "/img/upload")
public ResponseEntity<?> fileUpload(MultipartHttpServletRequest request) {
Map<String, MultipartFile> fileMap = request.getFileMap();
for (MultipartFile file : fileMap.values()) {
try {
file.transferTo(new File("/opt/img/" + file.getOriginalFilename()));
System.out.println(file.getOriginalFilename());
} catch (IOException e) {
e.printStackTrace();
}
}
return new ResponseEntity<>("File Uploaded Successfully.", HttpStatus.OK);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)