我很难用我的java应用服务器处理multipart / form-data请求。根据我的发现,servlet 3.0规范提供了诸如HttpServletRequest.getParts()之类的方法,这对于处理上传到我的servlet的表单数据是理想的。
但是,此方法是3.0 servlet规范的一部分,我的应用程序服务器(Tomcat 6)尚不支持此方法。即使使用有效的3.0 web.xml文件和java EE 6库,我在尝试调用getParts()时也会遇到以下异常:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getParts()Ljava/util/Collection;
切换应用程序服务器对于这个项目来说并不是一个可行的选择。是否有任何第三方库可用于处理java servlet中的multipart / form-data?
答案 0 :(得分:10)
结帐Apache Commons Fileupload。它为您提供了一个编程API来解析多部分请求,并逐个遍历它的各个部分。
我过去曾经使用它来进行简单的多部分处理,它可以很好地完成工作而不会过于复杂。
答案 1 :(得分:5)
Tomcat 6 does not and will not support Servlet Specification 3.0。您应该尝试在Tomcat 7上执行此操作,但我不确定此功能是否存在于当前可用的测试版中。预计该功能将出现在生产版本中。
您可以继续使用Apache Commons FileUpload,如在其他答案中发布的那样,或者您可以使用Glassfish(取决于您项目的当前阶段和类型)。
答案 2 :(得分:1)
当我们使用post方法而不是数据加密时,我们必须使用servletfileupload来获取请求的数据,并使用FileItemIterator我们可以获取所有表单数据。
我已在此链接How to process a form sent Google Web Toolkit in a servlet
上回答