适用于任何文件的,通过文件 url 下载文件,并可以重命名。
export function downloadUrlFile(url: string, fileName: any) {
const url2 = url.replace(/\\/g, '/');
const xhr = new XMLHttpRequest();
xhr.open('GET', url2, true);
xhr.responseType = 'blob';
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/json');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
// 为了避免大文件影响用户体验,建议加loading
xhr.onload = () => {
if (xhr.status === 200) {
// 获取文件blob数据并保存
const urlObject = window.URL || window.webkitURL || window;
// eslint-disable-next-line camelcase
const export_blob = new Blob([xhr.response]);
// createElementNS() 方法可创建带有指定命名空间的元素节点。
// 此方法可返回一个 Element 对象。
// eslint-disable-next-line camelcase
const save_link = window.document.createElementNS(
'http://www.w3.org/1999/xhtml',
'a'
);
// eslint-disable-next-line camelcase
save_link.href = urlObject.createObjectURL(export_blob);
// eslint-disable-next-line camelcase
save_link.download = fileName;
// eslint-disable-next-line camelcase
save_link.click();
}
};
xhr.send();
}