vue2 + axios 导出Excel文件流【参考chatGPT】

vue2 + elementUI 导出Excel文件流

exportLog(getNeedDelIds).then(res => {
  let response = res.data;
  // const filename = res.headers['content-disposition'].split('filename=')[1]
  // 获取文件名
  const dispositionHeader = res.headers['content-disposition'];
  const matches = /filename\*=UTF-8''([\w%+-]+)\.xlsx/i.exec(dispositionHeader);
  const filename = matches ? decodeURIComponent(matches[1]) : 'file.xlsx';
  console.log('文件名:', filename);

  const url = window.URL.createObjectURL(new Blob([response], { type: response.type })) // 创建URL对象
  const link = document.createElement('a')
  link.style.display = 'none'
  link.href = url
  link.setAttribute('download', filename)
  document.body.appendChild(link)
  link.click() // 触发下载
  document.body.removeChild(link)
}).catch(err => {
  console.log(err)
})

响应拦截器,判断是不是文件流

// 返回响应内容,用来做后续处理
if (success.headers['content-disposition']) {
  // 返回的是文件流
  console.log(success.headers['content-disposition']);
  return success;
} else {
  return success.data;
}

接口api

// 导出 /log/export
export function exportLog(data){
    return client.postFileRequest(`${api}/log/export`,data);
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值