我正在尝试处理文件上传,而我正在使用 com.oreilly.servlet.multipart.MultipartParser类来解析发布的 数据(在cos.jar中)。但是,当我调用MultipartParser的构造函数时,我得到了这个 例外:
java.io.IOException: Corrupt form data: premature ending
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166)
at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:94)
有没有人见过这个?从我读到的,这意味着 数据在找到它正在寻找的边界之前就已经结束了。我怎么能够 解决这个问题?
我正在使用cos.jar 1.0版。
谢谢!
答案 0 :(得分:1)
http://www.servlets.com/cos/faq.html
这表明存在问题 解析提交的POST请求 客户端。可能有很多原因 对于这个问题:
- 客户端点击STOP按钮(不是真正的问题,但它确实导致了一个问题 过早结束)
- 网络表单中的错误
- servlet中的错误
- 网络服务器中的错误
- 浏览器中的错误
- com.oreilly.servlet库本身的错误
历史记录显示了Web服务器 最常见的问题原因 可能是因为有这么多 不同的服务器和少数厂商 似乎测试他们的二进制上传 能力。
首先,确保您的客户不是 按下STOP按钮。然后,检查 如果您的问题已经发布 “你需要知道的Servlet错误 关于“这个网站上的资源。如果是的话 不太知名,那么你就会成为 首先要了解它!和 您可以与我们分享您的发现 这里!
其次,查看上传是否有效 提供的upload.html表单和 DemoRequestUploadServlet.java类。 有些人发现了他们的错误 造成问题的形式。测试 这个组合将看看是否 案子。一位用户Duke Takle发现 这个例外是由一个引起的 重定向:我遇到了同样的问题 阿尔伯特史密斯的“过早结局”。 我发现的是问题所在 被隔离到I.E. 5.0。该 困扰我的应用程序正在做 建设后的重定向 MultipartRequest。看起来像这样 施工进展顺利,除了在I.E. 5.0浏览器尝试再次发出请求,到那时为止 ServletInputStream为空。我有 修改了简单的应用程序 写下所需的响应而不是 重定向。观察到这个问题 并按照Tomcat 4.0中的描述进行修复 和Weblogic 6.1。其他用户都有 在处理servlet中发现了bug 他们调用request.getParameter()的地方 代替 multipartRequest.getParameter()和 一些服务器错误地读取输入 当他们的getParameter()是流时 被称为“意外结束” 部分”。
答案 1 :(得分:1)
所以,问题是由于我偶然两次调用MultipartParser构造函数引起的。它第二次失败,因为请求已经处理完毕。