繁体   English   中英

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

[英]exception when parsing multipart form 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版。

谢谢!

http://www.servlets.com/cos/faq.html

这表明解析客户端提交的POST请求时出现问题。 可能有很多原因导致此问题:

  • 客户端按下STOP按钮(这不是真正的问题,但确实会导致过早结束)
  • 网络表单中的错误
  • Servlet中的错误
  • Web服务器中的错误
  • 浏览器中的错误
  • com.oreilly.servlet库本身中的错误

历史表明,Web服务器是造成问题的最常见原因,可能是因为有太多不同的服务器,并且很少有供应商来测试其二进制上传功能。

首先,请确保您的客户未按下“停止”按钮。 然后,检查您的问题是否已经发布在此站点上的“您需要了解的Servlet错误”资源上。 如果它不为人所知,那么您将成为第一个了解它的人! 您可以在这里与我们分享您的发现!

其次,使用提供的upload.html表单和DemoRequestUploadServlet.java类查看上传是否正常。 有些人发现了导致问题的错误形式。 测试此组合将查看情况是否如此。 一个用户,塔克尔公爵(Duke Takle)发现此异常是由重定向引起的: 我遇到了与阿尔伯特·史密斯相同的“过早结束”。 我发现问题出在IE 5.0。 困扰我的应用程序在构造MultipartRequest之后执行重定向。 看起来这种构造进行得很好,只是在IE 5.0上,浏览器尝试再次发出请求,而那时ServletInputStream为空。 我已经修改了应用程序以仅编写所需的响应而不是重定向。 如Tomcat 4.0和Weblogic 6.1中所述,已观察到并解决了此问题。 其他用户在处理servlet时发现错误,他们调用request.getParameter()而不是multipartRequest.getParameter(),并且某些服务器在调用getParameter()时错误地读取了输入流,从而导致“部件的意外末尾”。

因此,问题是由我偶然两次调用MultipartParser构造函数引起的。 由于请求已被处理,因此第二次失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM