Axios手动使用GET方式(带token等Header)导出、下载文件

2022-09-07 1470点热度 0人点赞 0条评论

需求说明

我们开发普通的下载链接,只主要写一个<a href="path/to/file.pdf"></a>标签,不过有一些需求是要针对这个下载链接做权限校验,而权限校验需要在请求这个链接的时候,在Header里加上token之类的。

代码实现

使用axios来调用get请求,并发送自定义的Header,然后把请求到的数据组成下载内容,示例代码如下:

download() {
    axios.get('http://192.168.1.1:8081/api/export_pdf', {
        headers: {
            'Content-Disposition': "attachment; filename=download.pdf",
            'Content-Type': 'application/octet-stream',
            'X-Token': 'xxyyzz123' // 自定义token
        },
        responseType: 'arraybuffer',//or responseType: 'blob', //important
    }
    ).then((response) => {
        const url = window.URL.createObjectURL(new Blob([response.data]));
        const link = document.createElement('a');
        link.href = url;
        link.setAttribute('download', "download.pdf");
        document.body.appendChild(link);
        link.click();
        link.remove();
    }).catch((error) => console.log(error));
}

如果是POST请求,详见这篇:https://blog.terrynow.com/2021/08/09/axios-post-export-download-file/

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论