Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> file upload на сервер, ограничить размер файла 
V
    Опции темы
Samotnik
Дата 27.11.2009, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



использую апачевскую библиотеку fileupload 
Задача : 
Пользователь может загружать файлы на сервер, но нужно установить лимт закачки - не более, скажем 5 мегабайт, я сделал это ограничение 
Код

ServletFileUpload fu = new ServletFileUpload(new DiskFileItemFactory());
        fu.setFileSizeMax(1048576);
Вроде на первый взгляд работает, НО 
Если пользователь заливает 10 Метров, то на пяти метрах сваливается Ексепшен, НО ! Браузер не выдает эксепшен, а продолжает загружать ... в никуда smile 
Вопрос: как это обойти ? 
Потому что если предел будет 5 Мегабайт, а юзер попытается загрузить 10 ГИГАБАЙТ, то будет EPIC FAIL smile 

Есть решение ? Кто-нибудь сталкивался с таким ? 
PM MAIL   Вверх
garbuz
Дата 27.11.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



Samotnik, друг, аналогичная проблема и у меня smile
Вот бага в джире https://issues.apache.org/jira/browse/FILEUPLOAD-145
Написано, что будет пофикшено в версии 1.3, есть какой-то патч, только я его не трогал.
А тут написано, что баг пофикшен в текущей версии, хотя это не так
http://commons.apache.org/fileupload/changes-report.html

Короче если найдешь решение - дай знать smile
PM MAIL   Вверх
Samotnik
Дата 31.12.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Вобщем решил. smile 
Код

  Enumeration headerNames = request.getHeaderNames();
        while(headerNames.hasMoreElements()) {
             String headerName = (String)headerNames.nextElement();
             if ("content-length".equals(headerName)) {
                 naturalMaxSizeFile = Long.parseLong(request.getHeader(headerName));
             }
          }

Все порсто оказалось smile Беру из хидера свойство  "content-length" а там записанно число в байтах. 
Затем то, что больше 5 Мб. (или 5242880 байт) отметаю. 
PM MAIL   Вверх
garbuz
Дата 1.1.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



Цитата(Samotnik @  31.12.2009,  12:42 Найти цитируемый пост)
Вобщем решил. smile 

Лучше поздно чем никогда smile
Я пробовал через getContentLength(), но тоже что-то не получилось.



Это сообщение отредактировал(а) garbuz - 1.1.2010, 23:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.