Apache Commons Fileupload / Tomcat не может справиться с out.flush()
Кто-нибудь знает обходной путь, при котором, если вы пытаетесь очистить поток вывода сервлета, apache commons fileupload выдает следующее исключение?
FileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly
В основном у меня есть код, который проходит через каждый файл, загруженный с помощью Apache Commons FileUpload, а затем пытаюсь out.flush()
немного статистики о каждом файле. то есть:
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for(FileItem field : items) {
if (!field.isFormField() && field.getName().length()>0 && field.getName().getSize()>0) {
ArticleImport helper = new ArticleImport(new ArticleImportResponder(user,out));
// This helper object uses out.flush() to provide feedback to the user.
helper.process(field.getInputStream(), user);
}
}
}
Проблема не возникает в Apache Tomcat 6.0.20, но она встречается в более ранних версиях.
1 ответ
Решение
К сожалению, это известная ошибка, вы ничего не можете с этим поделать, кроме как убедиться, что вы используете по крайней мере 6.0.20.
Вы можете определить, какая версия tomcat запущена, и использовать ее, чтобы определить, можете ли вы использовать out.flush() с помощью следующего вызова:
javax.servlet.ServletContext.getServerInfo();