为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用jQuery.ajax和FormData上传文件

如何使用jQuery.ajax和FormData上传文件

青春有我 2019-10-17 10:19:29
当我使用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正确上传文件?
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您必须添加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

       }

    });

}  


查看完整回答
反对 回复 2019-10-17
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

它是一个Blob或File对象,例如,因为<input type="file" id="filechooser">它是document.getElementById('filechooser').files[0](假设用户已选择一个文件)。(在jQuery中$('#filechooser')[0].files[0])

查看完整回答
反对 回复 2019-10-17
  • 2 回答
  • 0 关注
  • 740 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信