ajax上傳文件的請求

一、data是FormData

發送的data必須是FormData類型jquery

二、注意processData

把processData設爲false,讓jquery不要對formData作處理,若是processData不設置爲false,jquery會把formData轉換爲字符串。ajax

三、contentType

查看文件上傳的請求頭裏Content-Type: multipart/form-data; boundary=OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp ,參數boundary爲請求參數之間的界限標識。
這裏的Content-Type不是你設置的,而是FormData的content-type。服務器

若是jquery請求設置了contentType,那麼就會覆蓋了formData的content-type,致使服務器在分隔參數和文件內容時是找不到boundary,報no multipart boundary was found錯誤app

默認狀況下jquery會把contentType設置爲application/x-www-form-urlencoded。要jquery不設置contentType,則須要把contentType設置爲false。post

也就是說contentType:false,防止contentType覆蓋掉formData的content-type。url

四、example

var data=new FormData();
$.each(files,function (i, file) {
    data.append("file",file);
});
$.ajax({url:'',
        type:'post',
        contentType:false,
        processData:false,
        data:data,
        success:function () {
            console.log("111");
        }
});
相關文章
相關標籤/搜索