js 下载后端返回的文件、图片 (二),兼容ie下载的方式
前端采用的是XMLHttpRequest下载,之前写过一篇关于XMLHttpRequest下载的文章,但是后面在测试兼容性的时候发现之前的写法不兼容ie9。
// 下载二维码
function downloadPic() {
// 对文件重命名
var excelName = '文件名'
var xmlHttp = new XMLHttpRequest();
var url = '请求的链接';
xmlHttp.open('get', url, true);
xmlHttp.responseType = "blob";
xmlHttp.onload = function () {
if (this.status == 200) {
var blob = this.response;
var href = window.URL.createObjectURL(blob); //创建下载的链接
//判断是否是IE浏览器,是的话返回true
if (window.navigator.msSaveBlob) {
try {
window.navigator.msSaveBlob(blob, excelName + '.png');
} catch (e) {
console.log(e);
}
} else {
// 谷歌浏览器 创建a标签 添加download属性下载
var downloadElement = document.createElement('a');
downloadElement.href = href;
downloadElement.target = '_blank';
downloadElement.download = excelName + '.png'; //下载二维码图片
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
}
}
}
xmlHttp.send();
}
后端返回的是File文件: