Управление загрузкой нескольких файлов с помощью Spring Boot и Swagger - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь управлять несколькими загрузками файлов, используя следующий метод контроллера Spring Boot:

    @RequestMapping(value = "/rest/multipleupload", method = RequestMethod.POST)
public ResponseEntity uploadFile(@RequestPart String metaData,
        @RequestPart(required = true) MultipartFile[] uploadfiles) {
    // Get file name
    String uploadedFileName = Arrays.stream(uploadfiles).map(x -> x.getOriginalFilename())
            .filter(x -> !StringUtils.isEmpty(x)).collect(Collectors.joining(" , "));

    if (StringUtils.isEmpty(uploadedFileName)) {
        return new ResponseEntity("please select a file!", HttpStatus.OK);
    }

    try {

        saveUploadedFiles(Arrays.asList(uploadfiles));

    } catch (IOException e) {
        return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
    }

    return new ResponseEntity("Successfully uploaded - " + uploadedFileName, HttpStatus.OK);
}

Когда я выполняю тест с использованием Swagger UI, возвращается следующая ошибка:

"Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided"

Вот что предлагает Swagger UI в качестве подсказки:

curl -X POST "http://localhost:8080/rest/multipleupload" -H  "accept: */*" -H  "Content-Type: application/json" -d "metaData=dddd&uploadfiles=%5Bobject%20File%5D&uploadfiles=%5Bobject%20File%5D"

В аналогичных темах было предложено добавить Apache's CommonsMultipartResolver:

@Bean(name = "multipartResolver")
public CommonsMultipartResolver commonsMultipartResolver() {
    return new CommonsMultipartResolver();
}

Однако это не помогло решить проблему. Я также попытался добавить:

spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=215MB

Но это тоже не помогло. Любое предложение?

...