Grails 3 и 4
Решение состоит в том, чтобы установить ограничения maxFileSize
и maxRequestSize
внутри вашего файла application.yml
. Обязательно иметь что-то вроде этого:
grails:
controllers:
upload:
maxFileSize: 2000000
maxRequestSize: 2000000
Замените 2000000
на максимальное количество байтов, которое требуется для загрузки файла и для всего запроса. Grails 3 и Grails 4 по умолчанию — 128000 (~128 КБ).
Вопросы-Ответы
<сильный>1. Как конвертировать из МБ в байты?
YOUR_MAX_SIZE_IN_MB * 1024 * 1024 = BYTES
Например. Конвертировать 5 МБ в байты
5 * 1024 * 1024 = **5242880** bytes
<сильный>2. Безопасность
Цитата из OWASP
Ограничьте размер файла до максимального значения, чтобы предотвратить атаки типа «отказ в обслуживании».
Таким образом, эти ограничения существуют для предотвращения DoS-атак и обеспечения общей производительности приложения (больший размер запроса == больше памяти, используемой сервером).
<сильный>3. Какое правильное значение для maxFileSize
и maxRequestSize
?
Это зависит от типа приложения, но, как правило, держать их слишком высокими — плохая идея. Если вам действительно нужно загружать большие файлы, вероятно, вам следует разработать (или использовать) специальный (и отдельный) сервис.
person
lifeisfoo
schedule
04.11.2015