前端文件下载用a标签下载,会出现无法二次点击下载,且文件保存框会获取不到文件大小;用文件流下载,如果文件比较大,点击下载需等待请求后端再执行下载,会出现没反应几秒钟,该如何解决?
1、a标签下载,设置了挂载和移除依然无法二次点击
function aTagDownload(url, filename){
const a = document.createElement("a"); // 创建 a 标签
a.href = url; // 下载路径
a.download = filename; // 下载属性,文件名
a.style.display = "none"; // 不可见
document.body.appendChild(a); // 挂载
a.click(); // 触发点击事件
document.body.removeChild(a); // 移除
}
获取不到文件大小,但能正常下载
2、用流下载,文件过大时,点击下载需等待,会出现没反应一会
download(data.filePath).then(response => {
var filename = data.fileName + '.' + data.fileType;
var link = document.createElement('a');
let binaryData = [];
binaryData.push(response);
link.href = window.URL.createObjectURL(new Blob(binaryData));
// link.href = window.URL.createObjectURL(response);
link.download = filename;
link.click();
});