#开发的过程中,后端返回一个下载地址,会出现自定义a.download = fileName;失效或者说不是想要的名称# 参考网上一些做法和自己实践,并做了大量验证,最终问题解决。希望对大家有帮助(点赞&收藏&转发)
代码如下:
const createAndClickLink = (downloadUrl, fileName) => {
return new Promise((resolve, reject) => {
const xhr = new window.XMLHttpRequest();
xhr.open("GET", downloadUrl, true);
xhr.responseType = "blob";
xhr.onload = () => {
const url = window.URL.createObjectURL(xhr.response);
const a = document.createElement("a");
a.href = url;
a.download = fileName;
// 使用 setTimeout 延迟点击操作
setTimeout(() => {
a.click();
window.URL.revokeObjectURL(url); // 释放资源
resolve(); // 解决 Promise
}, 0);
};
xhr.onerror = () => {
reject(new Error("文件下载失败"));
};
xhr.send();
});
};
//直接调用createAndClickLink(downloadUrl,fileName)