自学内容网 自学内容网

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)!