今天项目上遇到一个下载文件的坑,使用document.createElement('a')
创建一个a标签并点击的办法不适用于IE。
以下是两种解决方法:
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = "blob";
// 定义请求完成的处理函数
xhr.onload = function () {
// 请求完成
if (this.status === 200) {
// 无权限的操作
if(this.responseURL && this.responseURL.indexOf("login")!=-1){
myAlert("无权限的操作!");
return true;
}
var filename = 'bills.zip';
var blob = this.response;
// 不同浏览器的处理方式
if (window.navigator.msSaveOrOpenBlob) {
// IE
navigator.msSaveBlob(blob, filename);
} else {
// chrome
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
link.click();
window.URL.revokeObjectURL(link.href);
}
}
};
// 发送ajax请求
xhr.send()