为什么我用Apache Commons FileUpload获得“FileUploadException:Stream意外结束”?

时间:2009-03-14 16:23:06

标签: java file-upload apache-commons

遇到此例外的原因是什么:

org.apache.commons.fileupload.FileUploadException: 
  Processing of multipart/form-data request failed. Stream ended unexpectedly

3 个答案:

答案 0 :(得分:12)

主要原因是底层套接字已关闭或重置。最常见的原因是用户在文件完全上载之前关闭了浏览器。或者上传过程中互联网被中断。无论如何,服务器端代码应该能够优雅地处理这个异常。

答案 1 :(得分:3)

自从我处理该库以来已经有一年了,但如果我没记错,如果有人试图上传文件,然后更改浏览器URL(点击链接,打开书签等),那么你可以得到它异常。

答案 2 :(得分:2)

如果您使用FileUpload从Flash接收上传,则可能会出现此异常。

  

至少从版本8开始,Flash包含一个已知的错误:它产生的多部分流被破坏,因为最后的边界不包含后缀“ - ”,这应该表明,没有更多的项目跟随。因此,FileUpload等待下一个项目(它没有得到)并抛出异常。

有一种解决方法建议使用流API并捕获异常。

catch (MalformedStreamException e) {
    // Ignore this
}

有关详细信息,请参阅https://commons.apache.org/proper/commons-fileupload/faq.html#missing-boundary-terminator