Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > file upload на сервер


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

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

Есть решение ? Кто-нибудь сталкивался с таким ? 

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

Короче если найдешь решение - дай знать smile

Автор: Samotnik 31.12.2009, 12:42
Вобщем решил. 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 байт) отметаю. 

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

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)