發送的data必須是FormData類型jquery
把processData設爲false,讓jquery不要對formData作處理,若是processData不設置爲false,jquery會把formData轉換爲字符串。ajax
查看文件上傳的請求頭裏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
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"); } });