Стандартный плагин Struts 2 - загрузка файла размером более 2 МБ

Если я пытаюсь загрузить файл размером более 2 МБ, его ошибка.

На веб-сайте apache я обнаружил следующее: "Существует два отдельных ограничения на размер файла. Первый - это struts.multipart.maxSize, который берется из файла Struts 2 default.properties. Этот параметр существует из соображений безопасности, чтобы запретить злоумышленнику загружать очень большие файлы. для архивации дискового пространства на ваших серверах. По умолчанию этот параметр равен примерно 2 мегабайту и должен быть настроен на максимальный размер файла (максимум 2 гигабайта), который понадобится вашей платформе для получения "

Итак, я обнаружил, что эту проблему можно решить, добавив тег с желаемым максимальным пределом <constant name="struts.multipart.maxSize" value="1000000" /> в файле struts.xml.

Мы используем Struts2-Convention-плагин, поэтому у нас нет Struts.xml. Поэтому я не был уверен, где определить этот максимальный размер файла...

Пожалуйста, дайте мне знать, если кто-нибудь из вас сталкивался с этим..

Благодарим Вас за помощь.

2 ответа

Решение
  1. Вы можете определить максимальный размер в Struts.xml (multipart.maxSize, как вы сказали), чтобы ограничить общий перенос для каждого составного запроса;

  2. Вы также можете определить размер файла для перехватчика FileUpload (по умолчанию 2 МБ), как глобально для пакета, так и для отдельного действия (путем настройки этого параметра для этого перехватчика в <action> пометить в struts.xml или пометить его внутри Action при использовании плагина Convention:

    <interceptor-ref name="fileUpload">
        <param name="maximumSize">10485760</param>
    </interceptor-ref>
    

Это означает, что, например, если вы настроите общий размер нескольких частей в 20 МБ, а максимальный размер - 4 МБ, вы сможете выполнить множественную загрузку 5 файлов по 4 МБ в одном запросе;

Более подробная информация здесь: /questions/3058383/element-struts2-sform-obrezaet-parametr-surl-v-atribute-dejstviya/3058388#3058388


Тем не менее, ваша проблема не проблема;

использование плагина Convention не означает, что у вас нет файла struts.xml; это означает, что

  • Вы можете использовать аннотации в действиях
  • вы можете избегать использования struts.xml;
  • когда требуется конфигурация некоторых структур, не связанная с действием, например multipart.maxSize, глобальные отображения (результаты, исключения, стек пользовательских перехватчиков и т. д.), вы можете использовать файл struts.xml (создайте его, если его не было до этого момента).

Нигде в документации к плагину Convention не упоминается, что он является взаимоисключающим по отношению к struts.xml (вместо этого, если вы попытаетесь найти на этой странице " struts.xml ", вы найдете несколько случаев)

Вы должны изменить тоже server.xml файл под conf папка в вашем каталоге Apache. Найти connector тег, который вы используете, и добавить что maxPostSize Вы хотите, в байтах:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" 
           maxPostSize="2097152" />
Другие вопросы по тегам