Загрузка большого файла Spring Cloud Netflix Zuul

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

У меня есть Spring Boot + Zuul (@EnableZuulProxy), работающий на порту 8080, а затем еще один микросервис (назовем его хранилищем данных), который должен обрабатывать загрузку.

Я отправляю составной запрос к http: // локальный: 8080 / zuul / my / upload / конечная точка, который содержит файл и текстовую строку.

Когда я загружаю файл размером 100 МБ, все работает нормально. Zuul передает запрос в хранилище данных, и он поступает и сохраняется. Но когда я пытаюсь загрузить файл большего размера (150 МБ), Zuul обрабатывает запрос и передает его в хранилище данных, но затем где-то один из составных параметров удаляется из запроса, а затем ошибка хранилища данных возвращает 400 и говорит: «Требуемая часть запроса». строка "нет".

У меня следующая конфигурация как в микросервисе (zuul, так и в хранилище данных)

spring:
  servlet:
    multipart:
      max-file-size: 1000MB
      max-request-size: 1000MB

Кто-нибудь знает, как это решить? Я пробовал добавить CommonsMultipartResolver, но это ничего не изменило.

какую версию Spring-boot вы используете?

Yogendra Mishra 11.07.2018 18:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
1
3 017
1

Ответы 1

Вместо servlet следует использовать http.

В моем Zuul application.yml работают следующие свойства:

spring:
  http:  
    multipart:
      max-file-size: 1000MB
      max-request-size: 1000MB

В Spring boot 2 работают следующие свойства:

spring:
  servlet:
    multipart:
      max-file-size: 1000MB
      max-request-size: 1000MB

Здесь объясняются свойства:

{
   "name": "spring.http.multipart.max-file-size",
   "type": "java.lang.String",
   "description": "Max file size. Values can use the suffixes \"MB\" or \"KB\" to indicate megabytes or\n kilobytes respectively.",
   "sourceType": 
   "org.springframework.boot.autoconfigure.web.MultipartProperties",
   "defaultValue": "1MB"
},
{
   "name": "spring.http.multipart.max-request-size",
   "type": "java.lang.String",
   "description": "Max request size. Values can use the suffixes \"MB\" or \"KB\" to indicate megabytes or\n kilobytes respectively.",
   "sourceType": 
   "org.springframework.boot.autoconfigure.web.MultipartProperties",
   "defaultValue": "10MB"
},

Эти ответы могли бы выиграть от некоторых дополнительных объяснений и, возможно, некоторого переформатирования.

norok2 11.07.2018 16:52

Начиная с Spring-Boot 2.0 spring.http представляет собой замену spring.servlet.

Yogendra Mishra 11.07.2018 18:22

Да, я только что добавил свой ответ;)

Markoni 11.07.2018 18:40

Другие вопросы по теме