FormData物件的使用以及上傳檔案
阿新 • • 發佈:2018-11-14
FormData物件用以將資料編譯成鍵值對,以便用XMLHttpRequest來發送資料。其中最主要用於傳送表單資料,但亦可用於傳送帶鍵資料(keyeddata),而獨立於表單使用。如果表單enctype屬性設為multipart/form-data,則會使用表單的**submit()**方法老傳送資料,從而,傳送資料具有用樣形式。
建立FormData物件
建立一個FormData物件,然後呼叫append()方法來新增欄位
var formData =new FormData();
formData.append('username','siyu.li');
formData. append('accountNum',123455);//數字123455會被立即轉換成字串
//HTML檔案型別input,由使用者選擇
formData.append('userfile',fileInputElement.files[0]);
//JavaScript file-like物件
var content = '<a id="a"><b id="b">hey!</b></a>'; // 新檔案的正文...
var blob = new Blob([content], { type: "text/xml"});
formData.append("webmasterfile" , blob);
也可直接向FormData物件附加File或Blob型別的檔案:
formdata.append("myfile", myBlob, "filename.txt");
使用append()方法時,可以通過第三個可選引數設定傳送請求的頭 Content-Disposition 指定檔名。如果不指定檔名(或者不支援該引數時),將使用名字“blob”。
注意:
FormData物件的欄位型別可以是Blob,File,或者是string,
如果他的欄位型別不是Blob或者File,則會被轉換成字串類。
上面示例建立一個formData例項,包含‘username’,‘accountNum’, ‘userfile’, 'webmasterfile’四個欄位,然後使用xhr傳送表單資料。欄位’webmasterfile’是Blob型別。
使用FormData物件上傳檔案
可以通過jQuery來使用FormData物件
$.ajax({
url: "......url",
type: "POST",
async: true, //或false,是否非同步
data: formData,
processData: false, // 不處理資料
contentType: false, // 不設定內容型別
success:function(data){
},
error:function(data){
}
});