1、文件流格式下载
创建 a
标签下载文件流格式图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /** * 创建 <a> 标签下载文件流格式图片 * @param file * @param fileName */ export const downloadFile = (file: string, fileName?: string) => { const blob = new Blob([file]); const fileReader = new FileReader(); fileReader.readAsDataURL(blob); fileReader.onload = (e) => { const a = document.createElement( "a" ); a.download = fileName || '0123456.PNG' ; a.href = e.target?.result as string; document.body.appendChild(a); a.click(); document.body.removeChild(a); }; } |
文件流格式还可以转为Base64格式之后,再以链接格式下载
转换方式如下
1 2 3 4 5 6 7 8 9 | export const downloadFileUrl = (file: Blob) => { const blob = new Blob([file]); const fileReader = new FileReader(); fileReader.readAsDataURL(blob); fileReader.onload = (e) => { const url = e.target?.result as string; downloadImage(`data:image/png;Base64,${url}`, 'testefd' ) }; } |
2、链接格式下载
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 | /** * 根据图片路径下载 * @param imgsrc 图片路径 * @param name 下载图片名称 * @param type 格式图片,可选,默认png ,可选 png/jpeg */ export const downloadImage = (imgsrc: string, name: string, type: string = 'png' ) => { let image = new Image(); // 解决跨域 Canvas 污染问题 image.setAttribute( "crossOrigin" , "anonymous" ); image.onload = function () { let canvas = document.createElement( "canvas" ); canvas.width = image.width; canvas.height = image.height; let context = canvas.getContext( "2d" ); context?.drawImage(image, 0, 0, image.width, image.height); let url = canvas.toDataURL(`image/${type}`); //得到图片的base64编码数据 let a = document.createElement( "a" ); // 生成一个a元素 let event = new MouseEvent( "click" ); // 创建一个单击事件 a.download = name || "pic" ; // 设置图片名称 a.href = url; // 将生成的URL设置为a.href属性 a.dispatchEvent(event); // 触发a的单击事件 } //将资源链接赋值过去,才能触发image.onload 事件 image.src = imgsrc } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2022-01-04 node实现ueditor上传接口
2020-01-04 jetbrains产品(WebStorm、idea、pycharm) 最新激活码