场景:在日常开发中我们会遇到通过创建a标签来下载文件,代码如下:
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.onload = function() {
if(this.status==200){
var reader = new FileReader();
reader.readAsDataURL(xhr.response);
reader.onload = function(e){
const a = document.createElement('a');
a.download = '文件名.文件后缀';
a.href = e.target.result;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};
}
};
xhr.send();
这个时候会在下载目录里记录下载的url,拿到这个url可以在任何地方下载,如果此时的文件有下载权限的话,为了解决这个问题,可以稍加修改
var xhr = new XMLHttpRequest();
xhr.open('GET',url, true);
xhr.responseType = 'blob'; // 需要将responseType值设置为'bolb'
xhr.setRequestHeader('token', token);
xhr.setRequestHeader('Secure-Token', hex_md5(secureToken));
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.onload = function() {
if(this.status==200){
reader.onload = function(e){
// window.URL.createObjectURL(new Blob([xhr.response]))
var url = window.URL.createObjectURL(new Blob([xhr.response]));
var a = document.createElement('a');
a.download = '文件名.文件后缀';
a.href = url;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};
}
};
xhr.send();
网友评论