【问题标题】:Why did I get "FileUploadException: Stream ended unexpectedly" with Apache Commons FileUpload?为什么我使用 Apache Commons FileUpload 得到“FileUploadException:流意外结束”?
【发布时间】:2023-03-21 17:39:01
【问题描述】:

遇到这个异常的原因是什么:

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

【问题讨论】:

  • 你好,你能提供完整的堆栈跟踪吗?

标签: java file-upload apache-commons


【解决方案1】:

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

【讨论】:

  • 在第一种情况下,您可以在客户端进行一些验证,以避免文件太大而无法上传。是的,当然,有些浏览器不允许在上传前检查文件。 IE9 及更早的版本就是典型的例子。
【解决方案2】:

我处理那个库已经有一年了,但如果我没记错的话,如果有人尝试上传文件,然后更改浏览器 URL(点击链接、打开书签等),那么你可以得到例外。

【讨论】:

    【解决方案3】:

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

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

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

    catch (MalformedStreamException e) {
        // Ignore this
    }
    

    更多详情请参考https://commons.apache.org/proper/commons-fileupload/faq.html#missing-boundary-terminator

    【讨论】:

      猜你喜欢
      • 2011-03-16
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2015-11-17
      相关资源
      最近更新 更多