js-利用创建a便签实现下载文件功能
背景:
工作中经常会有点击按钮,下载或者导出文件的功能,用到的地方较多,把这个下载方法封装起来,方便调用。
封装代码:
export default function downloadBlob(data, fileName="file") {
let blob = new Blob([data]);
if(navigator.userAgent.indexOf("Edge") > -1) {
window.navigator.msSaveOrOpenBlob(blob, fileName);
}
let url = window.URL.createObjectURL(blob);
// 生成一个a标签
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
// 生成时间戳
link.download = decodeURI(fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link); // 下载完成移除元素
window.URL.revokeObjectURL(url); // 释放掉blob对象
}
调用:
handleExport(row) {
this.loading = true
this.$axios.post('/xxx/export',
{id: row.id}, //视情况传参
{responseType: "blob",}
).then(response => {
this.loading = false
if(response.data) {
let fileName = `${row.nick}_${row.reportName}_`+ dayjs().format('YYYY-MM-DD HH:mm') + '.xlsx';
//调用
downloadBlob(response.data, fileName)
}
})
}
原文地址:https://blog.csdn.net/xxuxioxx/article/details/142391537
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!