pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

  • <small id='4JVa3'></small><noframes id='4JVa3'>

    <tfoot id='4JVa3'></tfoot>

      <bdo id='4JVa3'></bdo><ul id='4JVa3'></ul>

      <i id='4JVa3'><tr id='4JVa3'><dt id='4JVa3'><q id='4JVa3'><span id='4JVa3'><b id='4JVa3'><form id='4JVa3'><ins id='4JVa3'></ins><ul id='4JVa3'></ul><sub id='4JVa3'></sub></form><legend id='4JVa3'></legend><bdo id='4JVa3'><pre id='4JVa3'><center id='4JVa3'></center></pre></bdo></b><th id='4JVa3'></th></span></q></dt></tr></i><div class="bf3hhoj" id='4JVa3'><tfoot id='4JVa3'></tfoot><dl id='4JVa3'><fieldset id='4JVa3'></fieldset></dl></div>
        <legend id='4JVa3'><style id='4JVa3'><dir id='4JVa3'><q id='4JVa3'></q></dir></style></legend>

        顯示使用 XHR2/AJAX 下載文件的進(jìn)度條

        Show a progress bar for downloading files using XHR2/AJAX(顯示使用 XHR2/AJAX 下載文件的進(jìn)度條)
          <bdo id='8rVTD'></bdo><ul id='8rVTD'></ul>
          <legend id='8rVTD'><style id='8rVTD'><dir id='8rVTD'><q id='8rVTD'></q></dir></style></legend>
          <i id='8rVTD'><tr id='8rVTD'><dt id='8rVTD'><q id='8rVTD'><span id='8rVTD'><b id='8rVTD'><form id='8rVTD'><ins id='8rVTD'></ins><ul id='8rVTD'></ul><sub id='8rVTD'></sub></form><legend id='8rVTD'></legend><bdo id='8rVTD'><pre id='8rVTD'><center id='8rVTD'></center></pre></bdo></b><th id='8rVTD'></th></span></q></dt></tr></i><div class="yajufbj" id='8rVTD'><tfoot id='8rVTD'></tfoot><dl id='8rVTD'><fieldset id='8rVTD'></fieldset></dl></div>

                <tfoot id='8rVTD'></tfoot>

                  <tbody id='8rVTD'></tbody>
              1. <small id='8rVTD'></small><noframes id='8rVTD'>

                  本文介紹了顯示使用 XHR2/AJAX 下載文件的進(jìn)度條的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  我正在嘗試使用 Ajax 下載文件并顯示自定義下載進(jìn)度條.

                  問題是我不明白該怎么做.我編寫了代碼來記錄進(jìn)度,但不知道如何啟動(dòng)下載.

                  注意:文件屬于不同類型.

                  提前致謝.

                  JS

                  //文件下載filelist.on('click', '.download_link', function(e){e.preventDefault();var id = $(this).data('id');$(this).parent().addClass("download_start");$.ajax({xhr: 函數(shù) () {var xhr = 新窗口.XMLHttpRequest();//處理下載進(jìn)度xhr.addEventListener("進(jìn)度", function (evt) {如果(evt.lengthComputable){var percentComplete = evt.loaded/evt.total;console.log(percentComplete);}}, 錯(cuò)誤的);返回xhr;},完成:函數(shù)(){console.log("請求完成");}})});

                  HTML 和 PHP

                   <li><div class="f_icon"><img src="'.$ico_path.'"></div><div class="left_wing"><div class="progressbar"></div><a class="download_link" href="#" id="'.$file_id.'"><div class="f_name">'.$full_file_name .'</div></a><div class="f_time_size">'.日期(M d,Y",$file_upload_time).' &#149;&nbsp;'.human_filesize($file_size) .'</div></div><div class="right_wing"><div 類="f_delete"><a class="btn btn-danger" href="#" aria-label="Delete" data-id="'.$file_id.'" data-filename="'.$full_file_name.'"><;i class="fa fa-trash-o fa-lg" aria-hidden="true" title="刪除這個(gè)?"></i></a></div></div></li>

                  解決方案

                  如果您想向用戶顯示下載過程的進(jìn)度條 - 您必須在 xmlhttprequest 中進(jìn)行下載.這里的問題之一是,如果您的文件很大 - 它們將在瀏覽器將它們寫入磁盤之前保存在瀏覽器的內(nèi)存中(使用常規(guī)下載文件時(shí)直接保存到磁盤,這樣可以在大文件上節(jié)省大量內(nèi)存).

                  另一個(gè)需要注意的重要事項(xiàng) - 為了使 lengthComputable 為真 - 您的服務(wù)器必須發(fā)送帶有文件大小的 Content-Length 標(biāo)頭.

                  這里是javascript代碼:

                  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div id="a1" data-filename="filename.xml">點(diǎn)擊下載</div><腳本>$('#a1').click(function() {var that = this;var page_url = 'download.php';var req = new XMLHttpRequest();req.open("POST", page_url, true);req.addEventListener("進(jìn)度", function (evt) {如果(evt.lengthComputable){var percentComplete = evt.loaded/evt.total;console.log(percentComplete);}}, 錯(cuò)誤的);req.responseType = "blob";req.onreadystatechange = function () {如果(req.readyState === 4 && req.status === 200){var filename = $(that).data('filename');if (typeof window.chrome !== 'undefined') {//鉻版本var link = document.createElement('a');link.href = window.URL.createObjectURL(req.response);link.download = 文件名;鏈接.click();} else if (typeof window.navigator.msSaveBlob !== 'undefined') {//IE版本var blob = new Blob([req.response], { type: 'application/force-download' });window.navigator.msSaveBlob(blob, 文件名);} 別的 {//火狐版本var file = new File([req.response], filename, { type: 'application/force-download' });window.open(URL.createObjectURL(file));}}};req.send();});</腳本>

                  下面是你可以使用的 php 代碼示例:

                  <塊引用>

                  請注意,我添加了一個(gè)睡眠來模擬慢速連接以在 localhost 上進(jìn)行測試.
                  您應(yīng)該在生產(chǎn)中刪除此 :)

                  I am trying to download files using Ajax and show a custom download progress bar.

                  The problem is I can't understand how to do so. I wrote the code to log the progress but don't know how to initiate the download.

                  NOTE: The files are of different types.

                  Thanks in advance.

                  JS

                  // Downloading of files
                  filelist.on('click', '.download_link', function(e){
                      e.preventDefault();
                      var id = $(this).data('id');
                      $(this).parent().addClass("download_start");
                  
                      $.ajax({
                          xhr: function () {
                              var xhr = new window.XMLHttpRequest();
                              // Handle Download Progress
                              xhr.addEventListener("progress", function (evt) {
                                  if(evt.lengthComputable) {
                                      var percentComplete = evt.loaded / evt.total;
                                      console.log(percentComplete);
                                  }
                              }, false);
                              return xhr;
                          },
                          complete: function () {
                              console.log("Request finished");
                          }
                      })
                  });
                  

                  HTML and PHP

                      <li>
                      <div class="f_icon"><img src="' . $ico_path . '"></div>
                      <div class="left_wing">
                         <div class="progressbar"></div>
                         <a class="download_link" href="#" id="'.$file_id.'"><div class="f_name">' . $full_file_name . '</div></a>
                         <div class="f_time_size">' . date("M d, Y", $file_upload_time) . '&nbsp; &#149; &nbsp;' . human_filesize($file_size) . '</div>
                      </div>
                  
                      <div class="right_wing">
                         <div class="f_delete">
                         <a class="btn btn-danger" href="#" aria-label="Delete" data-id="'.$file_id.'" data-filename="'.$full_file_name.'"><i class="fa fa-trash-o fa-lg" aria-hidden="true" title="Delete this?"></i>
                         </a>
                      </div>
                     </div>
                      </li>
                  

                  解決方案

                  If you want to show the user a progress-bar of the downloading process - you must do the download within the xmlhttprequest. One of the problems here is that if your files are big - they will be saved in the memory of the browser before the browser will write them to the disk (when using the regular download files are being saved directly to the disk, which saves a lot of memory on big files).

                  Another important thing to note - in order for the lengthComputable to be true - your server must send the Content-Length header with the size of the file.

                  Here is the javascript code:

                  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
                  <div id="a1" data-filename="filename.xml">Click to download</div>
                  <script>
                  $('#a1').click(function() {
                      var that = this;
                      var page_url = 'download.php';
                  
                      var req = new XMLHttpRequest();
                      req.open("POST", page_url, true);
                      req.addEventListener("progress", function (evt) {
                          if(evt.lengthComputable) {
                              var percentComplete = evt.loaded / evt.total;
                              console.log(percentComplete);
                          }
                      }, false);
                  
                      req.responseType = "blob";
                      req.onreadystatechange = function () {
                          if (req.readyState === 4 && req.status === 200) {
                              var filename = $(that).data('filename');
                              if (typeof window.chrome !== 'undefined') {
                                  // Chrome version
                                  var link = document.createElement('a');
                                  link.href = window.URL.createObjectURL(req.response);
                                  link.download = filename;
                                  link.click();
                              } else if (typeof window.navigator.msSaveBlob !== 'undefined') {
                                  // IE version
                                  var blob = new Blob([req.response], { type: 'application/force-download' });
                                  window.navigator.msSaveBlob(blob, filename);
                              } else {
                                  // Firefox version
                                  var file = new File([req.response], filename, { type: 'application/force-download' });
                                  window.open(URL.createObjectURL(file));
                              }
                          }
                      };
                      req.send();
                  });
                  </script>
                  

                  And here is an example for the php code you can use:

                  <?php
                  $filename = "some-big-file";
                  $filesize = filesize($filename);
                  
                  header("Content-Transfer-Encoding: Binary");
                  header("Content-Length:". $filesize);
                  header("Content-Disposition: attachment");
                  
                  $handle = fopen($filename, "rb");
                  if (FALSE === $handle) {
                      exit("Failed to open stream to URL");
                  }
                  
                  while (!feof($handle)) {
                      echo fread($handle, 1024*1024*10);
                      sleep(3);
                  }
                  
                  fclose($handle);
                  

                  Note that I added a sleep to simulate a slow connection for testing on localhost.
                  You should remove this on production :)

                  這篇關(guān)于顯示使用 XHR2/AJAX 下載文件的進(jìn)度條的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  Browser waits for ajax call to complete even after abort has been called (jQuery)(即使在調(diào)用 abort (jQuery) 之后,瀏覽器也會(huì)等待 ajax 調(diào)用完成)
                  JavaScript innerHTML is not working for IE?(JavaScript innerHTML 不適用于 IE?)
                  XMLHttpRequest cannot load, No #39;Access-Control-Allow-Origin#39; header is present on the requested resource(XMLHttpRequest 無法加載,請求的資源上不存在“Access-Control-Allow-Origin標(biāo)頭) - IT屋-程序員軟件開發(fā)技術(shù)分
                  Is it possible for XHR HEAD requests to not follow redirects (301 302)(XHR HEAD 請求是否有可能不遵循重定向 (301 302))
                  NETWORK_ERROR: XMLHttpRequest Exception 101(NETWORK_ERROR:XMLHttpRequest 異常 101)
                  XMLHttpRequest 206 Partial Content(XMLHttpRequest 206 部分內(nèi)容)

                    <legend id='oFHtX'><style id='oFHtX'><dir id='oFHtX'><q id='oFHtX'></q></dir></style></legend>

                      <tbody id='oFHtX'></tbody>

                        • <bdo id='oFHtX'></bdo><ul id='oFHtX'></ul>

                            <small id='oFHtX'></small><noframes id='oFHtX'>

                            <i id='oFHtX'><tr id='oFHtX'><dt id='oFHtX'><q id='oFHtX'><span id='oFHtX'><b id='oFHtX'><form id='oFHtX'><ins id='oFHtX'></ins><ul id='oFHtX'></ul><sub id='oFHtX'></sub></form><legend id='oFHtX'></legend><bdo id='oFHtX'><pre id='oFHtX'><center id='oFHtX'></center></pre></bdo></b><th id='oFHtX'></th></span></q></dt></tr></i><div class="qnawtdd" id='oFHtX'><tfoot id='oFHtX'></tfoot><dl id='oFHtX'><fieldset id='oFHtX'></fieldset></dl></div>
                            <tfoot id='oFHtX'></tfoot>
                            主站蜘蛛池模板: 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 直流大电流电源,燃料电池检漏设备-上海政飞 | 房间温控器|LonWorks|海思 | 光伏家 - 太阳能光伏发电_分布式光伏发电_太阳能光伏网 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 合肥办公室装修 - 合肥工装公司 - 天思装饰 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 厂厂乐-汇聚海量采购信息的B2B微营销平台-厂厂乐官网 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 乳化沥青设备_改性沥青设备_沥青加温罐_德州市昊通路桥工程有限公司 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 汝成内控-行政事业单位内部控制管理服务商 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 动物解剖台-成蚊接触筒-标本工具箱-负压实验台-北京哲成科技有限公司 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 伊卡洛斯软装首页-电动窗帘,别墅窗帘,定制窗帘,江浙沪1000+别墅窗帘案例 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家| 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 |