当前位置:   article > 正文

vue实现blob文档流下载文件_blob如何下载 vue

blob如何下载 vue

在这里简单的记录下vue如何实现blob文档流下载文件,通过调用后端接口或返回一个很乱的数据

如下图

注意:在这里需要特别注意的是不管接口是get还是post请求,在请求时需要多加一个参数 responseType:'blob' ,否则等等下载的文件会出现乱码

常见的axios请求如下:

  1. //post请求
  2. axios.post(url, {...params}, {responseType: 'blob'}).then((res) => {
  3. }).catch((err) => {
  4. })
  5. //get请求
  6. axios.get(url, {params: {}, responseType: 'blob'}).then((res) => {
  7. }).catch((err) => {
  8. })

如果是封装后的axios,对应的在请求时添加

以下为接口成功回调后的操作

  1. //下载
  2. downLoad() {
  3. // 原生请求可替换成对应封装后请求成功的回调中进行处理
  4. axios.post(url, {...params}, {responseType: 'blob'}).then((res) => {
  5. const blob = new Blob([res.data])//返回一个新的blob对象
  6. let fileName = '模版.xls'//下载文件名
  7. const downLoadElement = document.createElement('a')//创建a标签
  8. downLoadElement.style.display = 'none'//a标签样式为隐藏
  9. const href = window.URL.createObjectURL(blob)//创建window临时地址
  10. downLoadElement.href = href//跳转地址
  11. downLoadElement.setAttribute('download', fileName)
  12. document.body.appendChild(downLoadElement)//将指定的dom添加的body之后
  13. downLoadElement.click()//点击事件
  14. document.body.removeChild(downLoadElement)//移除dom
  15. window.URL.revokeObjectURL(href)//释放url地址
  16. }).catch((err) => {
  17. })
  18. },

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

闽ICP备14008679号