婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Html5 new XMLHttpRequest()監聽附件上傳進度

Html5 new XMLHttpRequest()監聽附件上傳進度

熱門標簽:江西ai電銷機器人如何 高德地圖標注廁所 西安金倫外呼系統 地圖標注沿海城市房價 中國地圖標注城市的 地圖標注員工作內容 威海語音外呼系統平臺 通遼地圖標注app 智能語音電銷機器人客戶端

本文主要介紹new XMLHttpRequest()監聽附件上傳進度,解決優化loading長時間加載,用戶等待問題

一、存在問題

經測試發現,new XMLHttpRequest()在附件上傳請求中,WIFI關閉切4G上傳,上傳進度不會持續;4G不關閉打開WIFI會繼續上傳,但等待時間過長,實際上是4G在上傳,倘若關閉4G網絡,上傳進度終止。

二、相關代碼

2.1 HTML

<div class="process-wrapper" id="processWrap">
 <div class="process-face"></div>
 <img class="close-icon" id="closeBtn" src="../../images/close.png" alt="">
 <div class="process">
  <div class="process-inner" id="processInner" style="width:50%"></div>
  <div class="process-value">
   <span>提交中...</span> 
   <span id="process">0%</span>
  </div>
 </div>
</div>

2.2 CSS樣式

/* 附件上傳進度條 */
.process-wrapper{
 -moz-user-select:none;
 position: fixed;
 left: 0;
 top: 0;
 bottom: 0;
 right: 0;
 z-index: 10000;
 display: none;
}
.process-face{
 width: 100%;
 height: 100%;
 background-color: #000;
 opacity: 0.7;
 position: fixed;
}
.close-icon{
 width: 26px;
 height: 26px;
 position: fixed;
 left: 50%;
 top: calc( 50% + 40px );
 transform: translate(-50%,-50%);
}
.process{
 width: 90%;
 height: 30px;
 background-color: #fff;
 border-radius: 30px;
 overflow: hidden;
 position: absolute;
 left: 50%;
 top: 50%;
 transform: translate(-50%,-50%);
 text-align: center;
 font-size: 14px;
 line-height: 30px;
 color: #999;
}
.process-inner{
 width: 100%;
 height: 30px;
 position: absolute;
 left: 0;
 top: 0;
 background-color: #0079C1;
 transition: 0.1s;
 z-index: -1;
}

2.3 JS

(function(app, doc) {
 
 var $processWrap = document.getElementById("processWrap"),
 $closeBtn = document.getElementById("closeBtn"),
 xhr = new XMLHttpRequest();
 doc.addEventListener('netchange', onNetChange, false);
 function onNetChange() {
  if ($processWrap.style.display != "none") {
   $processWrap.style.display = "none";
   xhr.abort();
   mui.toast('網絡中斷請重試');
  }
 }
 doSend: function() {
   app.ajaxFile({  //封裝好的ajax請求 
   url: "",
   data: FormData,
   xhr: xhr,
   success: function(r) {
    if (r == '1') {
     mui.toast("保存成功");
     // 上傳成功邏輯處理
    } else {
     $processWrap.style.display = "none";
     mui.toast(app.netError);
    }
   },
   error: function(r) {
    $processWrap.style.display = "none";
   },
   progress: function(e) {
    if (e.lengthComputable) {
     var progressBar = parseInt((e.loaded / e.total) * 100);
     if (progressBar < 100) {
      $progress.innerHTML = progressBar + "%";
      $processInner.style.width = progressBar + "%";
     }
    }
   },
   timeout:function(){
    $processWrap.style.display = "none";
   }

  });
 })
 mui.plusReady(function() {
  $closeBtn.addEventListener("tap",function(){
   setTimeout(function(){
    $processWrap.style.display = "none";
    xhr.abort();
   }, 400);
  })
 });
})(app, document);

三、app.js封裝ajax請求

var $ajaxCount = 0;

window.app = {
 //ajaxFile超時時間
 fileTimeout: 180000,
 ajaxFile: function(option) {
 $ajaxCount++; 
 var _ajaxCount = $ajaxCount;
 if (!option.error) {
  option.error = ajaxError; // 請求失敗提示
 }
 if (option.validateUserInfo == undefined) option.validateUserInfo = true;
 var xhr = option.xhr || new XMLHttpRequest();
 xhr.timeout = app.fileTimeout;
 xhr.open('POST', app.getItem(app.localKey.url) + option.url, true);
 xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
   var r = xhr.responseText;
   if (r) {
    r = JSON.parse(r);
   }
   if (_ajaxCount == $ajaxCount) {
    option.success && option.success(r);
   }
  }
 }
 xhr.upload.onprogress = function (e) {
  option.progress(e);
 }
 xhr.onerror = function(e) {
  option.error(e); // 添加 上傳失敗后的回調函數
 }
 xhr.ontimeout = function(e){
  option.timeout(e);
  app.closeWaiting();
  $.toast("請求超時,請重試");
  xhr.abort();
  }
 xhr.send(option.data);
},
}

拓展:后端NodeJS實現代碼

const express = require("express");
const multer = require("multer");
const expressStatic = require("express-static");
const fs = require("fs");

let server = express();
let upload = multer({ dest: __dirname+'/uploads/' })
// 處理提交文件的post請求
server.post('/upload_file', upload.single('file'), function (req, res, next) {
  console.log("file信息", req.file);
  fs.rename(req.file.path, req.file.path+"."+req.file.mimetype.split("/").pop(), ()=>{
    res.send({status: 1000})
  })
})

// 處理靜態目錄
server.use(expressStatic(__dirname+"/www"))
// 監聽服務
server.listen(8080, function(){
  console.log("請使用瀏覽器訪問 http://localhost:8080/")
});

到此這篇關于Html5 new XMLHttpRequest()監聽附件上傳進度的文章就介紹到這了,更多相關Html5 監聽附件上傳內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:阜陽 崇左 眉山 青海 晉中 河池 北海 營口

巨人網絡通訊聲明:本文標題《Html5 new XMLHttpRequest()監聽附件上傳進度》,本文關鍵詞  Html5,new,XMLHttpRequest,監聽,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Html5 new XMLHttpRequest()監聽附件上傳進度》相關的同類信息!
  • 本頁收集關于Html5 new XMLHttpRequest()監聽附件上傳進度的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产视频一区不卡| 欧美日韩在线观看一区二区| 视频一区国产视频| 又紧又大又爽精品一区二区| 国产精品久久久久久久久免费樱桃 | 日韩欧美在线不卡| 欧美日韩精品一区二区三区蜜桃 | 精品av久久707| 日韩视频一区二区在线观看| 欧美成人女星排行榜| 日韩欧美不卡一区| 精品人在线二区三区| 久久精品无码一区二区三区| 国产三级精品三级在线专区| 国产精品久久午夜| 亚洲精品高清在线| 亚洲一线二线三线久久久| 日韩精品成人一区二区三区| 美国欧美日韩国产在线播放| 国产精品自拍三区| 一本一道久久a久久精品| 99麻豆久久久国产精品免费优播| 成人理论电影网| aa级大片欧美| 在线不卡中文字幕播放| 久久久影视传媒| 亚洲女女做受ⅹxx高潮| 免费在线一区观看| 粗大黑人巨茎大战欧美成人| 国产一区二区在线影院| 美国毛片一区二区三区| 成人午夜电影小说| 日韩一区二区电影| 国产精品无人区| 亚洲电影一区二区| 国产精品99久久久久| 欧美日韩在线观看一区二区| 国产亚洲欧美一级| 亚洲一区二区三区四区在线| 精品一区二区三区av| 在线一区二区观看| 久久久精品日韩欧美| 午夜精品久久久| 成人小视频在线观看| 日韩欧美激情四射| 一区二区三区国产精华| 国产白丝精品91爽爽久久| 欧美视频一区二区三区| 国产精品美女久久福利网站| 另类欧美日韩国产在线| 欧美日韩中文一区| 国产精品入口麻豆九色| 国产麻豆成人传媒免费观看| 91.com视频| 亚洲欧美偷拍另类a∨色屁股| 精品一区二区三区在线播放视频 | 亚洲精品一区二区三区影院| 一区二区久久久| a美女胸又www黄视频久久| 久久噜噜亚洲综合| 免费看黄色91| 亚洲色图制服诱惑 | 精品一区二区av| 欧美日韩一本到| 亚洲激情av在线| 91麻豆文化传媒在线观看| 欧美国产日韩精品免费观看| 黄色成人免费在线| 欧美一级高清大全免费观看| 日韩av不卡在线观看| 欧美日韩免费观看一区三区| 亚洲国产欧美在线| 欧美视频一区二区三区| 亚洲成人在线免费| 欧美特级限制片免费在线观看| 亚洲精品久久嫩草网站秘色| 欧美在线短视频| 午夜精品福利视频网站| 91麻豆精品久久久久蜜臀| 日韩不卡免费视频| 日韩一级免费一区| 久久精品国产77777蜜臀| 亚洲精品一区在线观看| 国产精品 日产精品 欧美精品| 中文字幕欧美国产| 97精品电影院| 一区二区不卡在线播放| 91精品国产麻豆| 激情六月婷婷久久| 中文字幕不卡的av| 色国产精品一区在线观看| 午夜精彩视频在线观看不卡| 欧美一区二区三区白人| 国产传媒欧美日韩成人| 一区二区三区四区高清精品免费观看| 欧美日韩国产电影| 免播放器亚洲一区| 欧美国产欧美亚州国产日韩mv天天看完整| 波多野结衣中文一区| 午夜视频在线观看一区二区三区| 日韩写真欧美这视频| 成人精品免费视频| 亚洲电影一区二区| 久久久国产一区二区三区四区小说 | 日韩黄色在线观看| 久久久久久久精| 色综合久久88色综合天天免费| 午夜婷婷国产麻豆精品| 国产欧美一区二区精品婷婷 | 国产精品国产三级国产| 欧美日韩成人在线| 成人免费视频国产在线观看| 亚洲国产精品麻豆| 中文字幕va一区二区三区| 欧美日韩一区不卡| 欧美日韩精品福利| 成人免费毛片片v| 亚洲123区在线观看| 国产精品灌醉下药二区| 精品国产亚洲一区二区三区在线观看| 91视频免费播放| 国产麻豆成人精品| 日本成人在线一区| 亚洲最色的网站| 亚洲天堂成人在线观看| 久久精品亚洲麻豆av一区二区| 欧美视频一二三区| 99久久精品国产一区| 懂色一区二区三区免费观看 | zzijzzij亚洲日本少妇熟睡| 看片的网站亚洲| 图片区小说区区亚洲影院| 亚洲摸摸操操av| 中文字幕av免费专区久久| 精品国产第一区二区三区观看体验 | 在线观看91av| 在线亚洲欧美专区二区| 99久免费精品视频在线观看| 国产成+人+日韩+欧美+亚洲| 九九热在线视频观看这里只有精品| 午夜不卡av免费| 亚洲国产人成综合网站| 亚洲成人激情av| 一区二区三区四区视频精品免费| 国产精品美女久久久久av爽李琼| 久久综合国产精品| 精品欧美乱码久久久久久1区2区| 精品美女一区二区| 日韩丝袜情趣美女图片| 日韩精品资源二区在线| 精品国产区一区| 欧美大片一区二区三区| 精品国产免费人成电影在线观看四季| 精品久久一区二区| 久久久不卡影院| 国产精品久久久爽爽爽麻豆色哟哟| 日本一区二区免费在线| 国产精品理论片在线观看| 亚洲色图丝袜美腿| 一区二区高清在线| 丝袜美腿成人在线| 久久精品av麻豆的观看方式| 极品美女销魂一区二区三区 | 欧美日本在线观看| 91精品国产综合久久蜜臀| 日韩精品一区二区三区三区免费| 久久久噜噜噜久久人人看 | 日韩欧美综合一区| 精品国产区一区| 国产精品久久影院| 图片区小说区区亚洲影院| 国产尤物一区二区| eeuss鲁片一区二区三区在线观看| 欧美亚洲自拍偷拍| 日韩一区二区三区在线视频| 国产欧美综合色| 亚洲欧美一区二区三区国产精品| 亚洲国产视频一区| 久草热8精品视频在线观看| 成人动漫视频在线| 欧美色综合影院| 久久人人爽人人爽| 亚洲精品成人a在线观看| 久久精品国产网站| 91美女蜜桃在线| 日韩一区二区三区在线视频| 亚洲欧美一区二区在线观看| 日本一区中文字幕| 成人久久久精品乱码一区二区三区| 在线看国产一区| 久久亚洲精品国产精品紫薇| 亚洲一区二区视频| 国产suv一区二区三区88区| 欧美色男人天堂| 国产精品麻豆一区二区| 精品一区二区在线看| 欧美日韩视频在线一区二区| 国产精品第四页| 国产一区 二区 三区一级| 欧美另类z0zxhd电影|