1. 程式人生 > >關於檔案上傳踩過的坑multipart/form-data

關於檔案上傳踩過的坑multipart/form-data

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.