Стандартный плагин 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 ответа
Вы можете определить максимальный размер в Struts.xml (multipart.maxSize, как вы сказали), чтобы ограничить общий перенос для каждого составного запроса;
Вы также можете определить размер файла для перехватчика 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" />