1. 程式人生 > >FormData物件的使用以及上傳檔案

FormData物件的使用以及上傳檔案

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){
  }
  
});