如果当前页面地址和预下载的文件所处服务器不在同一域名下时,由于跨域访问限制,download配置会不生效,我们可以使用blob方式将文件转为同源文件,进行配置名称并下载
原生方式:
let xhr = new XMLHttpRequest();
xhr.open("GET", downloadUrl);
xhr.responseType = "blob";
xhr.onload = () => {
let blob = xhr.response;
const link = document.createElement("a");
link.href = URL.createObjectURL(blob);
link.setAttribute("download", "test.docx");
document.body.appendChild(link);
link.click();
link.remove();
};
xhr.send();
axios方式
axios.get(downloadUrl, {
responseType: "blob"
}).then(res => {
const link = document.createElement("a");
link.href = URL.createObjectURL(res.data);
link.setAttribute("download", "test.docx");
document.body.appendChild(link);
link.click();
link.remove();
});