1. 程式人生 > >FormData實現上傳多圖片,學習使用FormData

FormData實現上傳多圖片,學習使用FormData

FormData物件是為序列化表以及建立與表單格式相同的資料(當然是用於XHR傳輸)提供便利。

今天我們使用dropzone和FormData實現多檔案上傳功能。

var SAMP = null;        //Dropzone物件

      SAMP = new Dropzone("#dropzone",
    {
              url: "#",  //後臺響應的連結
              maxFiles: 4,    //最大可以傳輸的檔案數量  目前我們設定為1
              maxFilesize: 2048, //檔案大小的限制
              acceptedFiles: ".png,.jpg,.gif,.jpeg,.bmp", // 檔案格式的限制
              autoProcessQueue:false,  //檔案是否自動傳回到後臺
              myAwesomeDropzone:false,
    })

  我們設定檔案不自動上傳,而通過控制元件按鈕實現上傳功能。首先我們建立一個Dropzone物件,設定上傳的最大檔案數量,檔案大小等。

  var myFormData = new FormData()

  建立Form Data物件

 SAMP.on("addedfile", function(file) {
    myFormData.append(file.name, file)
 })

  給Dropzone物件註冊addedfile事件,當上傳檔案時,FormData物件的append()函式是以鍵值對的方式向myFormData成對成對的增添圖片物件。

$.ajax({
       type:'POST',   url:"/upload-img/",        data:myFormData, processData: false,//*必須寫 contentType: false,//*必須寫
       success:function(data){
             ...
        },
      error:function(XMLHttpRequest, textStatus, errorThrown){
            ...
         }
});

  在使用FormData物件通過Ajax向後臺傳資料時,必須在選項中設定"processData: false,contentType: false,"兩項,否則會報錯。

processData設定為false。因為data值是FormData物件,不需要對資料做處理。

  contentType設定為false。因為是由<form>表單構造的FormData

物件,且已經聲明瞭屬性enctype="multipart/form-data",所以這裡設定為false。