关于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转成文件并下载

posted @   2han9x1nyun  阅读(1424)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示