如何使用jQuery.ajax和FormData上传文件
当我使用XMLHttpRequest时,使用FormData
正确地上传文件。 但是,当我切换到jQuery.ajax
,我的代码中断。
这是工作的原始代码:
function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); var xhr = new XMLHttpRequest(); xhr.open("POST", "upload.php", true); xhr.send(fd); }
这是我不成功的jQuery.ajax
尝试:
function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); var xm = $.ajax({ url: "upload.php", type: "POST", data: fd, }); }
我究竟做错了什么? 我怎样才能使用AJAX来正确上传文件?
您必须将processData:false,contentType:false
到您的方法,以便jQuery不会更改标头或数据(这打破了您当前的代码)。
function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); $.ajax({ url: "upload.php", type: "POST", data: fd, processData: false, contentType: false, success: function(response) { // .. do something }, error: function(jqXHR, textStatus, errorMessage) { console.log(errorMessage); // Optional } }); }