如何在我的java servlet中处理multipart / form-data POST请求?

我很难用我的java应用服务器处理multipart / form-data请求。 根据我的发现,servlet 3.0规范提供了诸如HttpServletRequest.getParts()之类的方法,这对于处理上传到我的servlet的表单数据是理想的。

但是,此方法是3.0 servlet规范的一部分,我的应用程序服务器(Tomcat 6)尚不支持此方法。 即使使用有效的3.0 web.xml文件和java EE 6库,在尝试调用getParts()时也会出现以下exception:

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getParts()Ljava/util/Collection; 

切换应用程序服务器对于该项目来说并不是一个可行的选择 是否有任何第三方库可用于处理java servlet中的multipart / form-data?

查看Apache Commons Fileupload 。 它为您提供了一个编程API,用于解析多部分请求,并单独迭代它的各个部分。

我过去曾经使用它来进行简单的多部分处理,它可以很好地完成工作而不会过于复杂。

Tomcat 6不支持Servlet规范3.0,也不支持Servlet规范3.0 。 您应该尝试在Tomcat 7上执行此操作,但我不确定此function是否存在于当前可用的测试版中。 该function预计将出现在生产版本中。

您可以继续使用Apache Commons FileUpload,如在其他答案中发布的那样,或者您可以使用Glassfish(取决于项目的当前阶段和类型)。

当我们使用post方法而不是数据被加密时,我们必须使用servletfileupload来获取所请求的数据,并且使用FileItemIterator我们可以获取所有表单数据。

我已在此链接上回答如何处理在servlet中发送Google Web Toolkit的表单