2009-10-19 67 views
2

有誰知道一種解決方法,如果您嘗試刷新servlet輸出流,apache commons fileupload會引發以下異常?Apache Commons Fileupload/Tomcat無法應對out.flush()

FileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly 

基本上我有,通過使用Apache通用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

如果定義'out':

你可以通過下面的調用檢測哪個版本的Tomcat運行,並用它來確定是否可以使用了out.flush()?它是什麼?你怎麼得到的? – 2009-10-19 03:40:45

回答

3

不幸的是,這是一個已知的錯誤,除了確保您至少使用6.0.20以外,您無能爲力。

javax.servlet.ServletContext.getServerInfo(); 
+1

足夠接近(: – corydoras 2010-02-04 05:15:57

+0

)知道的bug究竟是什麼?我使用Apache Commons File Upload時遇到了與Tomcat和webapp大致相同的問題。 – Jon 2010-07-22 12:03:03