如何同时接受multipart和application / x-www-form-urlencoded?

时间:2012-08-09 16:35:58

标签: java jquery http servlets

我构建了一个servlet,允许上传文件或者上传列表作为输入。到目前为止,我已经通过将servlet设置为接受multipart / form-data来处理它,所以即使没有文件,我也会将列表作为一部分阅读。

我现在正试图通过JQuery AJAX方法而不是通过表单来调用此servlet来上传列表。如果我尝试通过该方法正常上传列表,我会得到:

org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded; charset=UTF-8

如果我将contentType设置为multipart / form-data,如下所示:

$.ajax({    
    url: someUrl, 
    type: 'POST', 
    contentType: 'multipart/form-data', 
    data: {list: inputList}
});

我得到了这个错误:

org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

我的问题是,是否有某种方法可以将servlet配置为接受这两种内容类型,或者是否有某种方法可以编写ajax数据来上传multipart / form-data?

我知道使用FormData API上传multipart / form-data很简单,但我需要支持IE9,所以这不是一个选项。

1 个答案:

答案 0 :(得分:1)

我建议您使用Apache Commons FileUpload库。它为您提供统一的界面,无论提交哪种类型的表单,都可以轻松使用上传的文件。请参阅{{3>}的处理上传的项目部分,它应该让您大致了解它是如何工作的。