1 downloadTemplate().then(res =>{
2
3 const data = res.data
4 const url = window.URL.createObjectURL(new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}))
5 const link = document.createElement('a')
6 link.style.display = 'none'
7 link.href = url
8 link.setAttribute('download', 'Template.xlsx')
9 document.body.appendChild(link)
10 link.click()
11 document.body.removeChild(link)
12
13 });

上面是常规的接受接口blob流下载文件的代码 ,实际过程中出现 后端包不同 接收文件出现损坏的情况

解决 1. 添加

responseType
1 export function downloadTemplate() {
2 return request({
3 url: '/downloadTemplate' ,
4 method: 'get',
5 responseType:"blob"
6 })
7 }

2. 解决不了的话 如果你的下载文件属于模板类不变的文件 ,直接放在public下与index.html同级 这样你就可以

                         const link = document.createElement('a')
link.style.display = 'none'
link.href = “./xxxxx”
link.setAttribute('download', 'Template.xlsx')
document.body.appendChild(link)
link.click()
document.body.removeChild(link)

过程中发现一个有趣的东西Blob 和ArrayBuffer 

Blob对象
Blob也是比较有意思,mdn上的解释是Blob对象表示不可变的类似文件对象的原始数据。Blob表示不一定是JavaScript原生形式的数据。

_其实就是英文Binary large Object,mysql有此类型数据结构

let blog = new Blob(arrya, options);

Blob() 构造函数返回一个新的 Blob 对象。

array 是一个由ArrayBuffer, ArrayBufferView, Blob, DOMString 等对象构成的 Array ,或者其他类似对象的混合体,它将会被放进 Blob。

options 是一个可选的BlobPropertyBag字典,它可能会指定如下两个属性:

**type**,默认值为 "",它代表了将会被放入到blob中的数组内容的**MIME**类型。

ArrayBuffer涉及面比较广,我的理解是ArrayBuffer代表内存之中的一段二进制数据,一旦生成不能再改。可以通过视图(TypedArray和DataView)进行操作。

TypedArray数组只是一层视图,本身不储存数据,它的数据都储存在底层的ArrayBuffer对象之中, 所以通过同一个arraybuffer生成的TypedArray共享内存数据。

看这些基本就差不多了 还想看多的https://zyc88.blog.csdn.net/article/details/101271056 ,我是没看(摊手)

最新文章

  1. [翻译]AKKA笔记 - ACTOR MESSAGING - REQUEST AND RESPONSE -3
  2. ubuntu14.04安装了im-switch后系统设置中不见了语言支持
  3. html成绩单表格
  4. 我给女朋友讲编程html系列(1) -- Html快速入门
  5. Mac环境下装node.js,npm,express;(包括express command not found)
  6. ext3中xtype属性汇总
  7. gstreamer让playbin能够播放rtp over udp流数据
  8. 常用的IO流
  9. Android组件系列----ContentProvider内容提供商【5】
  10. Java自学手记——集合
  11. ajax实现长连接
  12. zipCrack-v1.1 工具介绍
  13. Java 并发优化
  14. HDU 2988 Dark roads (裸的最小生成树)
  15. 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token
  16. LeetCode 326 Power of Three(3的幂)(递归、Log函数)
  17. Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件:
  18. Redis Key 过期策略
  19. tomcat配置https | 自签发证书配置
  20. 前端PHP入门-034-Session技术-掌握级别

热门文章

  1. DEDE留言板调用导航的方法
  2. Java基础系列(27)- 什么是方法
  3. win10系统git的安装与使用命令
  4. ubuntu安装git并配置SSH Key
  5. ~/.emacs emacs 配置文件
  6. 直接取PHP二维数组里面的值
  7. Css3 3D 旋转动画效果
  8. Python创建Excel表格,Word并写入数据
  9. Centos7创建swap分区
  10. Spring面试复习整理