js图片下载方式集合(附详细代码)
作者:失眠时间
关于图片下载问题,不同的浏览器,需要兼容的下载方式,这篇文章主要给大家介绍了关于js图片下载方式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
一、文件流格式下载
创建 a
标签下载文件流格式图片
/** * 创建 <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格式之后,再以链接格式下载
转换方式如下
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') }; }
二、链接格式下载
/** * 根据图片路径下载 * @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 }
总结
到此这篇关于js图片下载方式的文章就介绍到这了,更多相关js图片下载方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!