Отправка огромной строки через Ajax в Spring контроллер - PullRequest
0 голосов
/ 06 ноября 2018

У меня проблемы с отправкой строки в контроллер.

В моем файле JavaScript у меня есть:

$.ajax({
  url: myUrl,
  method: 'POST',
  data: {
    jsonString: JSON.stringify(myObject)
  }
});

В моем контроллере у меня есть отображение POST:

@PostMapping(value = myUrl)
public void saveString(@RequestParam String jsonString) throws IOException {
...
}

В зависимости от размера моей строки, код иногда работает, иногда я получаю исключение, что отсутствует параметр jsonString.

1 Ответ

0 голосов
/ 06 ноября 2018

Если вы используете Spring Boot, вы можете добавить следующие свойства в application.properties .

multipart.max-file-size=10Mb
multipart.max-request-size=10Mb

Это увеличит размер запроса, который будет обрабатывать Spring. В Tomcat вам потребуется изменить параметр maxPostSize, присутствующий в server.xml, чтобы увеличить размер запроса POST Http.

Еще один способ сделать это, если вы используете Tomcat, это добавить следующий код в файл конфигурации.

@Bean
EmbeddedServletContainerCustomizer containerCustomizer() throws Exception {
    return (ConfigurableEmbeddedServletContainer container) -> {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
            tomcat.addConnectorCustomizers(
                (connector) -> {
                    connector.setMaxPostSize(10000000); // 10 MB
                }
            );
        }
    };
}

Размер почтовой нагрузки по умолчанию, которую может получить Tomcat, составляет менее 1,5 МБ, что имеет смысл в вашем примере. Вы смогли опубликовать 1,2 МБ, но с 1,6 МБ это не удалось. Так что повышение этого лимита должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...