背景
由于浏览器的特性.txt .pdf .json
等等文件放在a
标签的href
属性中会被浏览器直接打开,这时可以给a
添加download
属性强制下载,但是当执行 跨域下载 文件时download
属性就会失效。
解决办法
跨域会导致download
属性失效,使用xhr
下载方式。
javascript
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);
}