校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 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精品国产综合久久蜜臀| 亚洲v日本v欧美v久久精品| 7777精品久久久大香线蕉 | 成人永久免费视频| 亚洲精品伦理在线| 久久久久久久免费视频了| 91黄色小视频| 成人黄色网址在线观看| 午夜精品一区二区三区免费视频| 这里是久久伊人| 国产河南妇女毛片精品久久久 | 国产亚洲成年网址在线观看| 99精品久久99久久久久| 日本 国产 欧美色综合| 国产精品第一页第二页第三页| 欧美日韩精品免费| 久久aⅴ国产欧美74aaa| 亚洲一区在线观看免费| 国产精品欧美经典| 欧美一级搡bbbb搡bbbb| 一本久久a久久免费精品不卡| 精品亚洲欧美一区| 亚洲成人综合网站| 亚洲日本在线a| 国产精品久久久久影院老司| 日韩欧美电影一二三| 欧美精品自拍偷拍| 欧美日韩一区二区三区视频| 99久久99久久精品国产片果冻| 久草热8精品视频在线观看| 午夜激情一区二区| 一区二区不卡在线播放| 亚洲三级在线免费观看| 国产精品白丝在线| 最新热久久免费视频| 亚洲欧美影音先锋| 亚洲免费av网站| 亚洲电影中文字幕在线观看| 一区二区激情视频| 视频精品一区二区| 日韩av一级片| 国产一区二区三区在线观看精品| 国产一区二区视频在线| www.日本不卡| 欧美日韩视频第一区| 欧美一级理论片| 国产午夜精品理论片a级大结局 | 一区二区三区久久| 日日骚欧美日韩| 国产一区中文字幕| 97se亚洲国产综合在线| 一本色道久久综合亚洲精品按摩| 91网上在线视频| 欧美亚一区二区| 日韩你懂的电影在线观看| 亚洲免费观看在线视频| 午夜精品久久久久久久久久久| 风间由美性色一区二区三区| 在线观看国产91| 久久精品亚洲精品国产欧美kt∨| 亚洲靠逼com| 国产精品系列在线播放| 欧美日韩久久久| 久久久久久久网| 免费高清不卡av| 91在线视频免费观看| 精品国产免费视频| 亚洲成a人片在线不卡一二三区| 精品无人码麻豆乱码1区2区| 欧美视频精品在线| 国产精品免费av| 国产福利一区二区三区视频在线 | 欧美日韩一区二区在线视频| 激情亚洲综合在线| 免费成人美女在线观看| 91婷婷韩国欧美一区二区| 精品国产髙清在线看国产毛片| 午夜精品福利在线| 欧美性极品少妇| 一级日本不卡的影视| 99久久久精品免费观看国产蜜| 日韩精品在线一区二区| 日韩一区精品视频| 欧美日韩国产经典色站一区二区三区 | 亚洲高清久久久| 欧美中文字幕一区二区三区亚洲| 一区二区中文字幕在线| 91小视频在线免费看| 亚洲欧洲成人精品av97| 色综合久久88色综合天天6 | 国产精品乱码妇女bbbb| 国产精品一区二区在线观看不卡| 欧美日韩免费观看一区二区三区| 亚洲国产精品精华液ab| 成人av在线网站| 国产精品视频免费看| 国产精品亚洲人在线观看| 久久久久国产免费免费| 国产成人免费在线| 国产精品成人午夜| 在线综合亚洲欧美在线视频| 午夜日韩在线电影| 国产69精品久久久久777| 国产调教视频一区| 欧美日韩在线精品一区二区三区激情| 亚洲电影一级黄| 国产色一区二区| 欧美人体做爰大胆视频| 国产酒店精品激情| 中文文精品字幕一区二区| 国产一区二区精品在线观看| 久久婷婷成人综合色| 成人av网站免费| 中文字幕佐山爱一区二区免费| 欧美性三三影院| 久久97超碰国产精品超碰| 欧美极品美女视频| 欧美肥妇毛茸茸| 91小视频在线观看| 狠狠网亚洲精品| 国产亚洲综合在线| 欧美精品久久久久久久久老牛影院| 国v精品久久久网| 亚洲国产成人va在线观看天堂| 久久伊人中文字幕| 日韩一区二区精品在线观看| 成人av在线播放网站| 国产精品一区二区不卡| 麻豆国产欧美日韩综合精品二区 | 青青草精品视频| 无码av免费一区二区三区试看| 日韩一区在线看| 亚洲欧美激情小说另类| 国产精品久久久久久久久免费樱桃 | 欧美综合一区二区三区| 99视频一区二区三区| 91丨porny丨最新| 日本高清成人免费播放| 色一情一伦一子一伦一区| av激情综合网| 色婷婷亚洲婷婷| 欧美色手机在线观看| 欧美精品在线一区二区三区| 欧美一二区视频| 欧美一区二区三区影视| 日韩一级二级三级| 国产日韩欧美激情| 亚洲欧洲韩国日本视频| 亚洲国产日韩a在线播放性色| 天堂在线亚洲视频| 国产高清不卡一区| 91玉足脚交白嫩脚丫在线播放| gogo大胆日本视频一区| 欧美性猛交xxxx黑人交| 日韩免费一区二区| 国产精品久久国产精麻豆99网站| ...xxx性欧美| 精品久久一区二区三区| 久久久久久久电影| 亚洲男人的天堂在线aⅴ视频| 午夜精品久久久久久久久| 国产精品资源在线看| 欧美日韩视频在线第一区| 久久综合狠狠综合久久激情| 亚洲欧美乱综合| 成人综合婷婷国产精品久久| 色www精品视频在线观看| 欧美不卡一二三| 亚洲一区二区三区视频在线播放| 午夜私人影院久久久久| 久久99精品久久久久久动态图 | 亚洲欧美怡红院| 激情久久久久久久久久久久久久久久| 亚欧色一区w666天堂| 久久久激情视频| 国产精品久久久久久久久动漫| 亚洲在线观看免费视频| 国产乱人伦偷精品视频不卡| 欧美日韩电影在线| 亚洲图片欧美激情| 福利视频网站一区二区三区| 日韩欧美国产麻豆| 青青青伊人色综合久久| 91麻豆精品国产自产在线| 亚洲中国最大av网站| 91丨九色丨蝌蚪丨老版| 国产欧美日本一区视频| 国产精品综合在线视频| 久久久精品免费免费| 国产99精品在线观看| 国产视频一区在线播放| 久久精品国产一区二区三| 欧美自拍偷拍午夜视频| 亚洲欧美激情一区二区| 欧美日韩精品一区二区三区四区| 亚洲免费高清视频在线| 91国产精品成人| 亚洲一区二区在线播放相泽 | 风流少妇一区二区|