有没有人知道一种解决方法,如果你试图刷新servlet输出流,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中不会出现此问题,但它确实发生在早期版本中。
答案 0 :(得分:3)
不幸的是,这是一个已知的错误,除了确保您使用至少6.0.20之外,您无能为力。
您可以检测正在运行的tomcat版本,并使用它来确定是否可以使用以下调用来使用out.flush():
javax.servlet.ServletContext.getServerInfo();