關於檔案上傳踩過的坑multipart/form-data
阿新 • • 發佈:2019-02-05
1.content-type
multipart-formdata:常用的檔案上傳請求編碼格式
application/x-www-urlencoded:預設的字元編碼格式,用於上傳表單,多用於文字,上傳檔案較慢
可在form中的enctype設定,或在ajax中設定contentye
2.上傳方式
1.使用formdata,formdata可在new時傳入表單,也可以在new之後使用append插入具體項,
// Files
formData.append(name, file, filename);
// Blobs
formData.append(name, blob, filename);
// Strings
formData.append(name, value);
需要注意的是formdata不支援ie
2.使用表單提交。表單的submit可以提交表單內容,但是會導致頁面的重新整理。可以設定form的target指向一個隱藏的iframe,在iframe中提交,但需使用某些iframe通訊機制將返回的資訊傳回window。
3.踩了的坑
在使用jq的ajax提交表單上傳檔案時,jq的預設編碼格式是application/x-www-urlencoded,如果與後臺不相符,要手動修改。同時,jq的ajax會預設將傳入的引數修改成鍵值對的形式,這種形式對於string合適,但對於上傳的檔案就不合適。儘管在網上找到了可以設定processdata:false來修改該方式,但不知道為啥還是不奏效,依然會報500錯誤,具體錯誤內容為no multipart boundary was found。最後的解決方法還是使用了原生的AJAX.