2015-07-29 3 views
0

У меня есть приложение GWT, и нам нужно загружать файлы, но я хочу ограничить размер. Так в настоящее время у меня есть это:ServletFileUpload, GWT не разбивается на большие файлы

ServletFileUpload.isMultipartContent(request); 
FileItemFactory factory = new DiskFileItemFactory(); 
ServletFileUpload upload = new ServletFileUpload(theFactory); 
upload.setFileSizeMax(<2mb>); 
upload.setSizeMax(<2mb>); 

try { 
    final List<FileItem> items = upload.parseRequest(request); 
    for (FileItem fileItem : items) { 
     <do file stuff> 
    } 
} 
catch (FileUploadException e) { 
    <break and return error> 
} 

Когда я загрузить 300MB + файл в режиме разработчика, как только он попадет в цикл он ломает и говорит, что файл является большим в исключении. Это происходит через секунду после нажатия кнопки загрузки.

Когда приложение развернуто на tomcat, оно ожидает, что файл будет полностью загружен, а не будет разбит до и отклонить файл.

Я знаю, что есть параметр tomcat, но размеры файлов, которые я принимаю для загрузки, очень разные для разных сервлетов, и я хочу установить это отдельно для сервлетов, а не самое большое значение, которое может быть намного больше, чем в основном принятые значения.

ответ

1

Вы можете добавить ChangeHandler к кнопке загрузки в GWT, и вызвать нативный метод из него передавая элемент баттона в:

private native boolean isFileSizeValid(Element inputFile)/*-{ 
     var fileToUpdate = inputFile.files[0]; 
     return fileToUpdate.size < 200...0; // pick the right number 
    }-*/; 

Это будет работать нормально для одного файла (если «множественный» отключен на входном элементе). Если вы разрешаете загружать несколько файлов, вы можете перебирать все элементы массива files[] и выполнять математику.

Этот подход поможет вам выполнить всю проверку на стороне клиента, но нуждается в поддержке FileAPI из браузера клиента. http://caniuse.com/#feat=fileapi

Извините, если вы искали только проверку подлинности.

+0

Привет, спасибо за ответ, но я не думаю, что этого достаточно, так как конфигурация находится в web.xml, и это бы переместило его на второе место. В любом случае, в будущем это может пригодиться;) –

Смежные вопросы