项目中最最常见的下载方法是后台返回一个文件地址,执行跳转即可,location.href = 'url'。
导出数据表格数据,后台返回的是二进制文档流格式的时候,我们要怎么处理呢?如图:
之前也遇到过从后台传递过来的图片是二进制格式的文档流,需要将文档流转化为url格式,将图片显示出来,结果没有实现,后台自己处理的,哈哈哈哈。。。这次必须研究出来,上代码吧!
拿到文档流(res.data)后,将数据转化为Blob实例,
执行 URL.createObjectUrl(Blob) 方法生成 url 地址,
再创建一个隐藏的a标签,
设置a标签的href属性为刚才得到的 url 地址,
download属性为下载后文件的名字,
再执行a标签的点击,
下载后移除 a 标签
需要注意:拿到respone数据的data类型是有要求的,必须是这个Blob类型(如下1图),如果是图2格式,则文件导出后格式出错,不能正常预览。
为了得到 Blob 格式的 data 值,这就要求我们在发送数据请求时,写入 responseType: 'blob',写法如下图3