vue axios 请求下载流文件 直接复制就行

async downloadFile() {
        try {
          // 替换为你的后端文件流接口URL
          const url = "http://192.168.9.50:55023/business/defectAnalysis/exportExcel/" + this.selectionIds
          // 设置responseType为'blob'来处理二进制流数据
          const response = await axios.get(url, {
            responseType: 'blob'
          });

          // 获取文件名,通常从响应头的Content-Disposition中提取
          const contentDisposition = response.headers['content-disposition'];
          //可以将自己的文件类型直接固定 也可以在header中动态取值
          //添加.xls 后文件名称固定位.xls文件  不写默认为text
          let fileName = 'downloadedFile.xls'; // 默认文件名  

          if (contentDisposition) {
            const matches = contentDisposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);
            if (matches != null && matches[1]) {
              fileName = matches[1].replace(/['"]/g, '');
            }
          }

          // 创建一个Blob对象表示文件内容,并使用URL.createObjectURL创建一个指向该Blob的URL
          const urlToDownload = window.URL.createObjectURL(new Blob([response.data]));

          // 创建隐藏的可下载链接
          const link = document.createElement('a');
          link.href = urlToDownload;
          link.download = fileName;
          document.body.appendChild(link);

          // 触发点击下载
          link.click();

          // 清理
          document.body.removeChild(link);
          window.URL.revokeObjectURL(urlToDownload);
        } catch (error) {
          console.error('下载文件时发生错误:', error);
        }
      },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值