最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實例講解javascript實現(xiàn)異步圖片上傳方法

 更新時間:2017年12月05日 14:39:58   投稿:laozhang  
給大家詳細講解一下如何通過javascript寫出異步圖片上傳,并且把實例代碼給大家分享了下,有興趣的讀者們測試一下吧。

我們首先看下HTML代碼實現(xiàn)的form提交部分。其中大家在測試的時候需要把test的URL更換成自己的,也可以直接寫一個本地地址測試。

html代碼:

<form id="uploadForm" action="http://storage.test.com/file/upload" method="post" enctype="multipart/form-data">
  <input type="hidden" name="key" id="key" value="VTZ18HM64#D_L3WX" />
  <input type="file" name="uploadFiles" value="" id="fileImage" multiple='multiple' />
  <div class="upload_submit">
  <button type="button" id="fileSubmit" class="upload_btn">保存</button>
  </div>
</form>

js代碼:

var Fileupload = {
  fileInput: $("#fileImage").get(0),
  dragDrop: $("#fileDragArea").get(0),
  upButton: $("#fileSubmit").get(0),
  url: $("#uploadForm").attr("action"),
  })(),
  //文件上傳
  funUploadFile: function() {
   var self = this;
   for (var i = 0, file; file = this.fileFilter[i]; i++) {
    (function(file) {
     var xhr = new XMLHttpRequest();
     if (xhr.upload) {
      // 上傳中
      xhr.upload.addEventListener("progress", function(e) {
       self.onProgress(file, e.loaded, e.total);
      }, false);
      // 文件上傳成功或是失敗
      xhr.onreadystatechange = function(e) {

      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
         self.onSuccess(JSON.parse(xhr.responseText));
         self.funDeleteFile(file);
         if (!self.fileFilter.length) {
          //全部完畢
          self.onComplete();
         }
        } else {
         self.onFailure(file, xhr.responseText);
        }
       }
      };
      //準(zhǔn)備FormData對象
      var myForm = document.getElementById('uploadForm');
      //將文件放入FormData對象中
      formData = new FormData(myForm);

      // 開始上傳
      xhr.open("POST", self.url, true);
      xhr.send(formData);
     }
    })(file);
   }
  },
  init: function() {
   var self = this;
   //上傳按鈕提交
   if (this.upButton) {
    console.log('提示: 當(dāng)前存儲服務(wù)器地址', this.url)
    this.upButton.addEventListener("click", function(e) {
     self.funUploadFile(e);
    }, false);
   }
   self.bindEvent();
  }
 };
 Fileupload = $.extend(Fileupload);
 Fileupload.init();

FormData 異步上傳文件

<input type="file" id="file">

一、創(chuàng)建FormData放入待上傳文件

//準(zhǔn)備FormData對象
var formData = new FormData(),
 uploadFile = document.getElementById('file');
 
//將文件放入FormData對象中 
formData.append('file', uploadFile.files[0]);

二、通過xhr發(fā)送FormData數(shù)據(jù)到服務(wù)器,實現(xiàn)文件上傳

//創(chuàng)建xhr對象
var xhr = new XMLHttpRequest();

//監(jiān)聽文件上傳進度
xhr.upload.onprogress = function(evt){
 //lengthComputabel: 文件長度是否可計算
 if(evt.lengthComputable){
  //evt.loaded: 已下載的字節(jié)數(shù)
  //evt.total: 文件總字節(jié)數(shù)
  var percent = Math.round(evt.loaded*100/evt.total);
  console.log(percent);
 }
}

//監(jiān)聽文件傳輸開始 
xhr.onloadstart = function(evt){
  xhr.abort() //終止上傳
}

//監(jiān)聽ajax成功完成事件
xhr.onload = function(evt){
 ...
}

//監(jiān)聽ajax錯誤事件 
xhr.onerror = function(evt){
 ...
}

//監(jiān)聽ajax被中止事件
xhr.onabort = function(evt){
 ...
}

//監(jiān)聽傳輸結(jié)束事件: 不管成功或者失敗都會觸發(fā)
xhr.onloaded = function(evt){
 ...
}
 
//*發(fā)起ajax請求數(shù)據(jù)
xhr.open('POST', '/url', true);
xhr.send(formData);

相關(guān)文章

  • 一文詳解如何處理JavaScript中的事件委托

    一文詳解如何處理JavaScript中的事件委托

    事件委托是指將一個事件處理程序綁定到父元素上,而不是直接綁定到每個子元素上,下面就跟隨小編一起來了解一下JavaScript是如何處理事件委托的吧
    2024-12-12
  • JS數(shù)組降維的幾種方法詳解

    JS數(shù)組降維的幾種方法詳解

    這篇文章主要介紹了JS數(shù)組降維的幾種方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 防止動態(tài)加載JavaScript引起的內(nèi)存泄漏問題

    防止動態(tài)加載JavaScript引起的內(nèi)存泄漏問題

    利用Script標(biāo)簽可以跨域加載并運行一段JavaScript腳本, 但Neil Fraser先前已指出,腳本運行后資源并沒被釋放,即使是Script標(biāo)簽移除后。
    2009-10-10
  • 基于JavaScript實現(xiàn)粒子流動效果

    基于JavaScript實現(xiàn)粒子流動效果

    這篇文章主要為大家詳細介紹了如何通過JavaScript實現(xiàn)粒子流動效果,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2023-09-09
  • 微信小程序 如何保持登錄狀態(tài)

    微信小程序 如何保持登錄狀態(tài)

    這篇文章主要介紹了微信小程序 如何保持登錄狀態(tài),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • javascript實現(xiàn)圖片輪播簡單效果

    javascript實現(xiàn)圖片輪播簡單效果

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)圖片輪播簡單效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • canvas學(xué)習(xí)之API整理筆記(二)

    canvas學(xué)習(xí)之API整理筆記(二)

    本篇文章的主要內(nèi)容包括高級動畫、像素操作、性能優(yōu)化等知識點,講解每個知識點的同時還會有一些酷炫的demo。下面跟著小編一起來看下吧
    2016-12-12
  • JS獲取瀏覽器地址欄的多個參數(shù)值的任意值實例代碼

    JS獲取瀏覽器地址欄的多個參數(shù)值的任意值實例代碼

    本文通過實例代碼給大家介紹了JS獲取瀏覽器地址欄的多個參數(shù)值的任意值,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的的朋友參考下吧
    2018-07-07
  • 淺談JS的原型和繼承

    淺談JS的原型和繼承

    這篇文章主要介紹了JS原型和繼承,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • js為鼠標(biāo)添加右擊事件防止默認的右擊菜單彈出

    js為鼠標(biāo)添加右擊事件防止默認的右擊菜單彈出

    本文為大家介紹下如何為使用js為鼠標(biāo)添加右擊事件防止默認的右擊菜單彈出,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-07-07

最新評論

九龙城区| 五常市| 英德市| 西林县| 平果县| 吉首市| 扶绥县| 竹山县| 桦南县| 伊金霍洛旗| 敦煌市| 辽宁省| 隆昌县| 邹城市| 福海县| 柘荣县| 西安市| 蓬溪县| 绥棱县| 巨野县| 合水县| 晋宁县| 南投县| 宜兰县| 鹿泉市| 东阿县| 海阳市| 田林县| 乌拉特前旗| 康平县| 吉林省| 安国市| 新竹市| 中阳县| 桑日县| 洪湖市| 新闻| 青川县| 乐东| 西充县| 舒兰市|