Spring MVC загрузить несколько файлов одновременно с AJAX не работает - PullRequest
0 голосов
/ 13 мая 2018

Я использую Spring boot 2.0.1 и пытаюсь загрузить несколько файлов с помощью dropzone.Все отлично работает, когда я использую uploadMultiple: false на 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);
}

Файлы не более 1 МБ, а мои настройки

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

Все выглядит идеально.Я до сих пор не могу найти причину этой проблемы?

1 Ответ

0 голосов
/ 13 мая 2018

Кажется, я должен использовать 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);
}
...