base64转blob并下载

2019-06-28  本文已影响0人  回不去的那些时光

今天遇到一个特别蛋疼的东西,需要做一个文件下载的功能,我请求接口后发现只给了一个base64格式的数据还有一个文件名。在网上翻了很久,决定把base64转成blob然后再下载。下面给实现

base64转blob

// dataurl为去掉了头的base64格式编码
dataURLtoBlob(dataurl) {
  // 使用atob方法解码base64
  var raw = window.atob(dataurl);
  // 创建一个存储解码后数据的数组
  var uInt8Array = new Uint8Array(raw.length);
 // blob只能接收二进制编码,需要讲base64转为二进制再塞进去
  for (var i = 0; i < raw.length; ++i) {
    uInt8Array[i] = raw.charCodeAt(i);
  }
  // 这里给了一个返回值,在别的方法掉用传入base64编码就可以得到转化后的blob
  return new Blob([uInt8Array], { type: "" });
},

blob下载

// 调用方法,拿到blob
let blob = this.dataURLtoBlob("base64编码");
// 创建一个a链接
var aTag = document.createElement("a");
// 给下载文件命名
aTag.download = val.ATTACHUSERFILE;
// 创建下载
aTag.href = URL.createObjectURL(blob);
// 开始下载
aTag.click();
URL.revokeObjectURL(blob);

声明:本文借鉴了这篇文章

上一篇 下一篇

猜你喜欢

热点阅读