当前位置:   article > 正文

怎么通过blob的方式下载文件_blob下载

blob下载

思路:

  • 导出的接口返回的是二进制流
  • axios配置responseType为blob接收二进制流文件为Blob格式
  • 安装file-saver包,实现下载Blob文件  yarn add file-saver

导出的接口的数据类型

  1. export function xxx() {
  2. return request({
  3. url: 'xxx',
  4. // 改变接收数据的类型
  5. responseType: 'blob' // 使用blob接收二进制文件流
  6. })
  7. }

改造响应拦截器

判断是不是blob类型,如果是直接返回数据,不再进行解构

  1. // 响应拦截器
  2. service.interceptors.response.use((response) => {
  3. // axios默认包裹了data
  4. // 判断是不是Blob
  5. if (response.data instanceof Blob) return response.data // 返回了Blob对象
  6. const { data, message, success } = response.data // 默认json格式
  7. if (success) {
  8. return data
  9. } else {
  10. Message({ type: 'error', message })
  11. return Promise.reject(new Error(message))
  12. }
  13. },

安装file-saver

  1. $ npm i file-saver
  2. $ yarn add file-saver

点击按钮调用接口

使用file-saver将blob转化成文件下载

  1. <el-button size="mini" @click="exportEmployee">excel导出</el-button>
  2. import FileSaver from 'file-saver'
  3. import { xxxx} from '@/api/employee'
  4. async xxxxx() {
  5. const result = await xxxx() // 导出
  6. // console.log(result) // 使用一个npm包 直接将blob文件下载到本地 file-saver
  7. // FileSaver.saveAs(blob对象,文件名称)
  8. FileSaver.saveAs(result, 'xxx表.xlsx') // 下载文件
  9. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/145220
推荐阅读
相关标签
  

闽ICP备14008679号