Разрешить загрузку файлов размером более 2 ГБ в struts2

Я использую Struts 2.1 в своем проекте.

В struts.xml элемент maxsize в моем проекте выглядит следующим образом:

<constant name="struts.multipart.maxSize" value="2147483648" />

Для процесса загрузки файла

Можно ли заменить обычное ограничение Struts2 на размер файла в 2 ГБ?


person p_saurabh92    schedule 10.12.2015    source источник


Ответы (1)


Вам следует перейти на последнюю версию Struts2.

Начиная с 2.3.20 и выше, новая реализация MulitpartRequest может можно использовать для загрузки больших файлов:

Альтернативные библиотеки

struts.multipart.parser, используемый перехватчиком fileUpload для обработки запросов HTTP POST, закодированных с использованием multipart/form-data типа MIME, можно изменить. В настоящее время есть два варианта: jakarta и pell. Анализатор jakarta — это стандартная часть среды Struts 2, для которой в проект нужно добавить только необходимые библиотеки. Парсер pell использует составной парсер Джейсона Пелла вместо библиотеки Commons-FileUpload. Анализатор pell представляет собой подключаемый модуль Struts 2. Дополнительные сведения см. на странице http://cwiki.apache.org/S2PLUGINS/pell-multipart-plugin.html. Была и третья альтернатива, cos, но она была удалена из-за несовместимости лицензий.

Начиная с Struts версии 2.3.18 была добавлена ​​новая реализация MultiPartRequest — JakartaStreamMultiPartRequest. Его можно использовать для обработки больших файлов. Подробнее см. WW-3025. но вы можете просто установить

<constant name="struts.multipart.parser" value="jakarta-stream" />

> в файле struts.xml, чтобы начать его использовать.

person Andrea Ligios    schedule 10.12.2015
comment
Я уже пытался использовать синтаксический анализатор pell, но, похоже, я упускаю еще одну необходимую конфигурацию. Я включил файл плагина в каталог /WEB-INF/lib, а затем запись в struts.xml. Но я не могу загружать файлы большего размера (> 2 ГБ). - person p_saurabh92; 10.12.2015
comment
Вы прочитали часть BOLD? Парсер pell не позволяет загружать файлы размером более 2 ГБ. Jakarta-stream делает это. И он доступен с 2.3.18+ (который не выпущен в дикую природу, поэтому с 2.3.20+). Просто перейдите на 2.3.24.1 и живите счастливо - person Andrea Ligios; 10.12.2015
comment
Есть ли другая альтернатива этой проблеме, когда мне не нужно переходить с struts 2.1.8 на 2.3.18+? Я использовал парсер pell по ссылке (struts.apache.org/docs/handling -file-uploads.html) , в котором для элемента struts.multipart.maxSize указано, что он может быть установлен до 2 гигабайт (больше, если вы хотите отредактировать составной исходный код Pell, но вам действительно нужно переосмыслить вещи если вам нужно загрузить файлы размером более 2 гигабайт!) - person p_saurabh92; 10.12.2015
comment
Я так не думаю, если только вы не хотите переписать этот синтаксический анализатор и настроить свою версию библиотеки. Но учтите, что в более новых версиях есть много улучшений и исправлений безопасности, поэтому серьезно подумайте о миграции. - person Andrea Ligios; 10.12.2015
comment
Миграция большого проекта с версии 2.1.8 на версию 2.3.18+ будет иметь множество зависимостей. Я попытался заменить файлы jar в каталоге WEB-INF моего проекта, но приложение разбилось. Требуются ли другие изменения? - person p_saurabh92; 11.12.2015
comment
В версии 2.1.8 уже решено большинство проблем, с которыми вы столкнетесь при переходе с версии 2.0 на версию 2.3. Остальные проблемы связаны с попытками избежать DMI, попытками избежать доступа к статическим методам, разрешением суффикса действия в struts.xml, изменением DTD XML-файлов проверки с 1.0.2 на 1.0.3, но, вероятно, все это происходит быстро, независимо от того, проект большой или маленький, потому что большинство изменений централизовано в одном файле конфигурации. Кстати, убедитесь, что вы обновляете ВСЕ необходимые jar-файлы (ядро struts, ognl, freemarker, javassist, ecc) до одной и той же, правильной, последней версии. - person Andrea Ligios; 11.12.2015
comment
Я попытался перейти на 2.3.24, но столкнулся со следующей проблемой: stackoverflow.com/questions/34671001/ - person p_saurabh92; 08.01.2016
comment
Проблемы с загрузкой файлов в struts 2.3.24 -greater-th" title="после перехода на struts 2 3 24 загрузка файлов по-прежнему не поддерживается для большего"> stackoverflow.com/questions/34715137/ - person p_saurabh92; 11.01.2016