下载后端返回的blob流文件

    /**
     * 下载文件
     * @param url 请求路径
     * @param fileName 文件名称
     * @param data 请求数据
     * @param method 请求方式
     */
    downloadFile (url,fileName,data,method) {
        let options = {
            url: process.env.VUE_APP_API_URL + url,
            method ,
            responseType: 'blob',
            headers: {'X-Access-Token':oStorageModule.getItem('TOKEN')}
        }
        if (method.toUpperCase() === 'GET') {
            options.params = data
        } else {
            options.data = data
        }
        return new Promise((resolve, reject) => {
            axios(options)
                .then(response => {
                    // 创建一个 Blob 对象
                    const blob = new Blob([response.data], {type: response.headers['content-type']});

                    // 创建一个下载链接
                    const downloadLink = document.createElement('a');
                    downloadLink.href = URL.createObjectURL(blob);

                    // 获取文件名,可以从response的headers中获取
                    const contentDisposition = response.headers['content-disposition'];
                    const filename = contentDisposition
                        ? contentDisposition.split('filename=')[1]
                        : fileName;

                    // 设置下载链接的属性
                    downloadLink.setAttribute('download', filename);

                    // 触发点击事件以开始下载
                    downloadLink.click();

                    // 释放URL对象
                    URL.revokeObjectURL(downloadLink.href);
                    resolve()
                })
                .catch(error => {
                    reject(error)
                });
        })
    },

如果发现下载后无法打开,那可能是因为文件后缀错了,比如是.zip的压缩文件,被写成了.png图片

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值