当前位置: 首页 > article >正文

记录:导出功能:接收文件流数据进行导出(vue3)

请求接口:一定要加responseType: 'blob'

后端返回数据:

api.js
export function export() {
  return request({
    url: 'dev/api/export',
    method: 'get',
    responseType: 'blob',//一定要加
  })
}
vue:
import {export} from '@/api'

// 导出
const exportTable = () => {
  ElMessageBox.confirm('确定导出表格数据?', '提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
  })
    .then(() => {
      exportGradeScene().then((res) => {
        exportFile(res)
      })
    })
    .catch(() => {
      ElMessage({
        type: 'info',
        message: '导出取消',
      })
    })
}
const exportFile = (response) => {
  // 导出文件通用逻辑(仅限axios)
  const contentDisposition = response.headers['content-disposition'] // 解析文件名
  const filename = decodeURIComponent(
    contentDisposition.split('filename=')[1].trim().replace(/\"/g, ''),
  )
  // 创建链接并触发下载
  const url = window.URL.createObjectURL(
    new Blob([response.data], {
      type: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    }),
  )
  const link = document.createElement('a')
  link.href = url
  link.setAttribute('download', filename)
  document.body.appendChild(link)
  link.click()
}


http://www.kler.cn/a/466840.html

相关文章:

  • RK3588+麒麟国产系统+FPGA+AI在电力和轨道交通视觉与采集系统的应用
  • 音视频入门基础:MPEG2-PS专题(3)——MPEG2-PS格式简介
  • 力扣283 移动零
  • 如何通过USB在电脑上查看手机屏幕
  • 云计算在医疗行业的应用
  • 如何使用OpenCV进行抓图-多线程
  • Jdk动态代理源码缓存优化比较(JDK17比JDK8)
  • 推荐一些关于C#中LINQ的学习资料
  • Qt窗口获取Tftpd32_svc服务下载信息
  • [redux] ts声明useSelector和useDispatch
  • 嵌入式 Linux LED 驱动开发实验
  • 运维工具汇总
  • 【数据分析实战】24年T4某二手车交易平台数据分析
  • 【机器学习】【朴素贝叶斯分类器】从理论到实践:朴素贝叶斯分类器在垃圾短信过滤中的应用
  • 【数据库】简答题汇总
  • 力扣28找出字符串中第一个匹配项的下标
  • PyTorch中的__init__.pyi文件:作用与C++实现关系解析
  • 《探秘开源大模型:AI 世界的“超级引擎”》
  • Github 2024-12-30 开源项目周报 Top15
  • Chrome浏览器实例的TypeScript自动化脚本
  • Uniapp跨域请求
  • ​​​​​​​CDP集群安全指南系列文章导读
  • 无人机解码物流配送技术详解
  • ReactiveStreams、Reactor、SpringWebFlux
  • 【深度学习遥感应用中的“信息”】空间信息、语义信息、纹理信息、边缘信息、表层信息、深层信息...
  • 探索 AIGC 的基础知识:人工智能生成内容的全景视图