通过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格式:
以下是我的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中给出的答案