admin管理员组

文章数量:1545253

一般来说,我们的js文件下载会使用window.location.href定位到后端的接口,后端生成文件返回,然后浏览器自动下载。这种方法最简单,但是无法获取下载成功的通知,在大文件生成和下载的时候,时间过长,用户可能会重复进行下载的点击,对服务器造成负担。

因此要用另外的方式发送请求来监听文件下载完成,此方法使用的是XMLHttpRequest来请求,可以监听文件下载完成,另外一提,如果要对下载使用进度条监听的话,可以使用设置cookie循环向后端请求获取进度的方法,本文只讨论前者。

不多bb,直接开始

这是我一开始的版本:

load = function() {
   
//填写你的下载时加载的提示
}
disload = function() {
   
//下载完成后触发,用来关闭提示框
}
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;
             var reader = new FileReader();
             reader.readAsDataURL(blob);
             reader.onload = function (e) {
   
                 var headerName = xhr.

本文标签: 无法下载浏览器标签功能文件