base64文件前端下载
遇到需要下载cer格式的证书文件时,后台获取base64字符串,然后根据以下的工具类,进行下载。
其他格式的文件,修改后缀名即可。
var base64File = "";
downloadFileByBase64(base64File ,"root","cer");
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | /** * desc: base64对象转blob文件对象 * @param urlData :数据的base64对象 * @param type :类型 png,pdf,doc,mp3等; * @returns {Blob}:Blob文件对象 */ function base64ToBlob(urlData, type) { let arr = urlData.split( ',' ) let array = arr[0].match(/:(.*?);/) let mime = (array && array.length > 1 ? array[1] : type) || type // 去掉url的头,并转化为byte let bytes = window.atob(arr[1]) // 处理异常,将ascii码小于0的转换为大于0 let ab = new ArrayBuffer(bytes.length) // 生成视图(直接针对内存):8位无符号整数,长度1个字节 let ia = new Uint8Array(ab) for ( let i = 0; i < bytes.length; i++) { ia[i] = bytes.charCodeAt(i) } return new Blob([ab], { type: mime }) } /** * desc: 下载导出文件 * @param blob :返回数据的blob对象或链接 * @param fileName :下载后文件名标记 * @param fileType :文件类 word(docx) excel(xlsx) ppt等 */ function downloadExportFile(blob, fileName, fileType) { let downloadElement = document.createElement( 'a' ) let href = blob if ( typeof blob == 'string' ) { downloadElement.target = '_blank' } else { href = window.URL.createObjectURL(blob) //创建下载的链接 } downloadElement.href = href downloadElement.download = fileName + '.' + fileType //下载后文件名 document.body.appendChild(downloadElement) downloadElement.click() //触发点击下载 document.body.removeChild(downloadElement) //下载完成移除元素 if ( typeof blob != 'string' ) { window.URL.revokeObjectURL(href) //释放掉blob对象 } } /** * desc: base64转文件并下载 * @param base64 {String} : base64数据 * @param fileType {String} : 要导出的文件类型png,pdf,doc,mp3等 * @param fileName {String} : 文件名 */ export function downloadFileByBase64(base64, fileName, fileType) { let typeHeader = 'data:application/' + fileType + ';base64,' // 定义base64 头部文件类型 let converedBase64 = typeHeader + base64 // 拼接最终的base64 let blob = base64ToBlob(converedBase64, fileType) // 转成blob对象 downloadExportFile(blob, fileName, fileType) // 下载文件 } |
本文来自博客园,作者:路易蓝,转载请注明原文链接:https://www.cnblogs.com/luyilan/p/17089427.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了