Плагин соглашения 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-plugin, поэтому у нас нет struts.xml. Поэтому я не был уверен, где определить этот максимальный размер файла...

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

Благодарю за вашу помощь.


person user2371505    schedule 04.06.2013    source источник


Ответы (2)


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

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

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

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

Подробнее здесь: https://stackoverflow.com/a/15968166/1654265


Тем не менее, ваша проблема не является проблемой;

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

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

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

person Andrea Ligios    schedule 05.06.2013

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

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" 
           maxPostSize="2097152" />
person Armaggedon    schedule 04.06.2013