2

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

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

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 数据以上传多部分/表单数据?

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

4

1 回答 1

1

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

于 2012-08-09T17:13:59.860 回答