ajax - Spring mvc使用AJAX一次上传多个文件不起作用

标签 ajax spring-mvc tomcat dropzone.js dropzone

我正在使用 Spring boot 2.0.1,我正在尝试使用 dropzone 上传多个文件。当我在 Dropzone.js 上使用 uploadMultiple: false 时,一切工作正常。当我设置 uploadMultiple: true 时,我的 Controller 停止工作。

Controller 类如下:

@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

我上传文件时的请求 header :

------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[]文件。我将方法更改为:

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

关于ajax - Spring mvc使用AJAX一次上传多个文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320177/

相关文章:

ajax - 如何为 AJAX 查询返回纯文本?

javascript - 为什么ajax不显示更新后的JSON内容?

java - 如何配置 Spring 以避免设置 Pragma No-Cache

java - tomcat相对路径设置

java - JVM内存转储

jquery - 如何在没有 async = false 的情况下执行 jQuery 阻塞 AJAX 调用?

jquery - 使用 Ajax 上下文刷新页面的一部分

java - Spring Boot Hibernate无法删除验证 token

java - 初始化服务时URI不是绝对的

git - Jenkins 中的 Bitbucket 不工作