背景
由于浏览器的特性.txt .pdf .json 等等文件放在a标签的href属性中会被浏览器直接打开,这时可以给a添加download属性强制下载,但是当执行 跨域下载 文件时download属性就会失效。
解决办法
跨域会导致download属性失效,使用xhr下载方式。
export default function download(url, fileName) {
const xhr = new XMLHttpRequest()
xhr.open('GET', url, true)
xhr.responseType = 'blob'
xhr.onload = () => {
const url = window.URL.createObjectURL(xhr.response)
createAndRemove(url, fileName)
}
xhr.send()
}
function createAndRemove(url, fileName) {
// 创建隐藏的可下载链接
var eleLink = document.createElement('a');
eleLink.download = fileName;
eleLink.style.display = 'none';
// 下载内容转变成blob地址
eleLink.href = url;
// 触发点击
document.body.appendChild(eleLink);
eleLink.click();
// 然后移除
document.body.removeChild(eleLink);
}










