其他分享
首页 > 其他分享> > 关于js将后端返回的base64转换为可下载文件的问题

关于js将后端返回的base64转换为可下载文件的问题

作者:互联网

先调通接口,后端一般会返回给我们这样的数据格式。下图的File及为base64字符串,FileName为文件名

 

 首先,我们先将base64转换为blob类型(blob是一个长度可变的二进制大对象字符串)

dataURLtoBlob(dataurl,name) {
     var mime = name.substring(name.lastIndexOf('.')+1)
     var bstr = atob(dataurl), n = bstr.length, u8arr = new Uint8Array(n);
     while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
     }
    return new Blob([u8arr], { type: mime });
},

成功后可以转为一个这样的对象

 

 

 之后就可以使用a标签来进行下载

downloadFile(url,name){
    var a = document.createElement("a")
    a.setAttribute("href",url)
    a.setAttribute("download",name)
    a.setAttribute("target","_blank")
    let clickEvent = document.createEvent("MouseEvents");
    clickEvent.initEvent("click", true, true);
    a.dispatchEvent(clickEvent);
},

再进行适当的调用即可将base64转成文件并下载

标签:name,base64,setAttribute,js,bstr,var,u8arr,下载
来源: https://www.cnblogs.com/zxyUsed/p/16363112.html