ファイルをアップロードしたり、入力としてリストをアップロードしたりできるサーブレットを作成しました。これまでは、サーブレットがmultipart / form-dataを受け入れるように設定して処理してきたので、ファイルがなくてもリストを一部として読みました。
現在、このサーブレットを呼び出して、フォームではなくJQueryAJAXメソッドを介してリストをアップロードしようとしています。メソッドを使用してリストを通常どおりアップロードしようとすると、次のようになります。
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
私の質問は、両方のコンテンツタイプを受け入れるようにサーブレットを構成する方法があるかどうか、あるいは、マルチパート/フォームデータをアップロードするためにajaxデータを書き込む方法があるかどうかです。
FormDataAPIを使用してmultipart/form-dataをアップロードするのは簡単ですが、IE9をサポートする必要があるため、これはオプションではありません。