ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js下载文件 监听下载完成事件

2021-12-28 13:35:40  阅读:206  来源: 互联网

标签:load function url js xhr var 监听 下载


<script src="xxx/layui/layui.js"></script>
<script src="xxx/jquery.min.js"></script>
<script>
  var down_windows;
 
  function exportAll(){
    var url  = "xxx.xls";
 
    // 现在使用的方法 可在下载完成的时候关闭load弹窗
    getDownload(url);
 
    // 之前使用的方法 存在的问题就是 如果文件下载很慢 用户以为没有点击上 会重复点击 如果加上load弹窗 由于无法监听下载完成事件 无法在下载完成瞬间关闭load弹窗
    // window.location.href = "<{:url('/contract.Index/out')}>" + "?branch_id="+branch_id+"&name="+name;
  }
 
 
  //填写你的下载时加载的操作
  load = function() {
    down_windows = layer.load(1, {
      shade: [0.5,'#fff'] //0.1透明度的白色背景
    });
  }
  //下载完成后触发,用来关闭提示框
  disload = function() {
    layer.close(down_windows)
  }
  // 下载使用的方法
  getDownload = function(url) {
    load();
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);    // 也可用POST方式
    xhr.responseType = "blob";
    xhr.onload = function () {
      if (this.status === 200) {
        var blob = this.response;
        if (navigator.msSaveBlob == null) {
          var a = document.createElement('a');
          var headerName = xhr.getResponseHeader("Content-disposition");
          a.download = decodeURIComponent(headerName).substring(20);
          a.href = URL.createObjectURL(blob);
          $("body").append(a);    // 修复firefox中无法触发click
          a.click();
          URL.revokeObjectURL(a.href);
          $(a).remove();
        } else {
          navigator.msSaveBlob(blob, decodeURIComponent(headerName).substring(20));
        }
      }
      disload();
    };
    xhr.send()
  };
 
</script>

 

 

来源:https://blog.csdn.net/wb_json/article/details/121122425

 

标签:load,function,url,js,xhr,var,监听,下载
来源: https://www.cnblogs.com/youmingkuang/p/15740216.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有