Путаница в отношении spring.http.multipart.max-file-size против spring.servlet.multipart.max-file-size - PullRequest
0 голосов
/ 20 мая 2019

Я потратил несколько дней на то, чтобы заставить Spring Boot Upload работать, но, как всегда в Spring, вы не представляете, как работает магия, и даже после нескольких лет работы с этим фреймворком - вам приходится много раз гуглить, чтобы разобраться, чточто-то пошло не так и решил такие вещи, как если бы вы шли через лабиринт, это кошмар для удобства обслуживания.

Использование Spring Boot 2.2.0.M3 для загрузки файлов. В чем разница между настройками двух пар?Что правильно?

spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1

Используется ли указанное выше "http" с методами контроллера Spring REST, а именно так ... @GetMapping ("/ files / {filename:. +}") @ResponseBody public ModelAndView yourMethod (.....) Или это вообще не нужно и представляет собой полную красную сельдь, и нижеприведенный параметр выполняет всю работу для файлов, размер которых превышает значение по умолчанию 1 МБ для обоих RESTзапросы http или Servlet.

spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1

Исключение при загрузке

Превышен максимальный размер загрузки;вложенным исключением является java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase $ FileSizeLimitExceededException: размер файла поля превышает максимально допустимый размер - 1048576 байт.

1 Ответ

1 голос
/ 20 мая 2019

Они изменили имена свойств в разных версиях.

Spring Boot 1.3.x и более ранних версий

multipart.max-file-size
multipart.max-request-size

После Spring Boot 1.3.x:

spring.http.multipart.max-file-size=-1
spring.http.multipart.max-request-size=-1

После Spring Boot 2.0:

spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1

максимальный размер файла против максимального размера запроса

spring.servlet.multipart.max-file-size = 2 МБ

Максимальный размер файла, поддерживаемый для загрузки, составляет 2 МБ;

также поддерживает суффиксы MB или KB;по умолчанию 1 МБ


spring.servlet.multipart.max-request-size=10MB 

максимальный размер всего запроса составляет 10 МБ;

также поддерживает суффиксы МБ или КБ

ДляНеограниченный размер загружаемого файла. Кажется, установка -1 сделает это для файла неограниченного размера.


ОБНОВЛЕНИЕ: Вам не нужно указывать spring.** property на уровне контроллера(ожидать заголовки Content-Type в некоторых случаях).Вы можете установить эти свойства в файле appilcation.properties, как показано ниже.

# MULTIPART (MultipartProperties)
spring.servlet.multipart.enabled=true # Whether to enable support of multipart uploads.
spring.servlet.multipart.file-size-threshold=0B # Threshold after which files are written to disk.
spring.servlet.multipart.location= # Intermediate location of uploaded files.
spring.servlet.multipart.max-file-size=1MB # Max file size.
spring.servlet.multipart.max-request-size=10MB # Max request size.
spring.servlet.multipart.resolve-lazily=false # Whether to resolve the multipart request lazily at the time of file or parameter access.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...