vue使用axios实现下载附件以及根据响应头content-disposition,拿到附件名称filename,实现下载功能

直接代码

export function download(url) {
    return downloadserviceIGO({
        url: url,
        method: 'get',
        responseType: 'blob',
        closeMsg: true,
        loadingText: true
    })
}  

/**
       * 批量下载附件
       */
       async download(row) {
          let url = `xxxurl`;// 请求地址
          let response = await download(url);
        
        console.log(response,'AAA')
        // 从响应对象中获取Content-Disposition  
        const contentDisposition = response.headers['content-disposition'];
        console.log(contentDisposition); // 打印Content-Disposition的值
    
        // 如果需要处理文件下载等,可以基于contentDisposition做进一步处理  
        // 示例:如果Content-Disposition中包含filename,可以提取出来  
        const matches = /"([^"]*)"/.exec(contentDisposition);  
        let filename;
        if (matches != null && matches[1]) {
              filename = matches[1];  
            console.log('文件名:', filename);  
            // 接下来可以基于filename处理文件下载等  
        }  

          const blob = new Blob([response.data]);
          // 创建一个指向该对象的URL 
          const href = URL.createObjectURL(blob,{ type: response.headers['Content-Type'] });// 创建新的URL表示指定的blob对象
          const a = document.createElement('a');// 创建a标签
          a.style.display = 'none';
          // 指定下载链接
          a.href = href;
          // 指定下载文件名
          a.setAttribute('download', filename);
          a.click();// 触发下载
          URL.revokeObjectURL(a.href);// 释放URL对象
      },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值