解析多部分表单数据时出现异常

时间:2009-02-27 17:27:24

标签: java multipartform-data

我正在尝试处理文件上传,而我正在使用 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版。

谢谢!

2 个答案:

答案 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构造函数引起的。它第二次失败,因为请求已经处理完毕。