通过AJAX上传图片,不能在jQuery中使用serialize()方法?

我发现使用AJAX上传图像似乎不能使用表单中指定的multipart,因为我的代码用于检查它的multipart()是否从不起作用(在Java中);

if (context.isMultiPart() { System.out.println("received Multipart data"); } else { System.out.println("not multipart data!"); /* my code always prints this message in the upload handler uploadPost() */ } 

我有这个HTML格式:

 
Please specify file to upload:

以下是我的ajax代码,它将图像发送到地址/uploadPost上传处理程序。 我的Java代码中的uploadPost()方法首先确定上传是否是多部分,但是,似乎ajax不会将图像作为multipart发送。 是因为我在表单上使用jQuery的serialize()方法吗?

   $(document).ready(function() { $('#imageUploadForm').submit(function(evt) { var formData = $('#imageUploadForm').serialize(); $.post('/uploadPost', formData, uploadResults); evt.preventDefault(); }); // display the uploaded image on the same page function uploadResults(data) { $('#imagedisplay').html(""); } // end of uploadResults }); // end of ready  

从serialize()更改为以下代码对我有用:

 $('#imageUploadForm').submit(function(evt) { evt.preventDefault(); var formData = new FormData(this); $.ajax({ type: 'POST', url: $(this).attr('action'), data:formData, cache:false, contentType: false, processData: false, success: function(data) { $('#imagedisplay').html(""); }, error: function(data) { $('#imagedisplay').html("

this file type is not supported

"); } }); });

您可以使用Formdata(), API DOC

代码将类似于现有问题Stack Overflow Link中给出的答案