pc端js根据图片url进行下载单张图片以及批量下载到本地

编程入门 行业动态 更新时间:2024-10-23 19:21:37

pc端js根据<a href=https://www.elefans.com/category/jswz/34/1770705.html style=图片url进行下载单张图片以及批量下载到本地"/>

pc端js根据图片url进行下载单张图片以及批量下载到本地

1、单张下载

单张下载到本地主要实现方式是
1.使用cavans把图片转化未base64格式
2.创建a标签然后创建一个点击事件进行下载到本地
主要代码如下

loadCode(imgsrc, name ) {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/png"); //得到图片的base64编码数据let a = document.createElement("a"); // 生成一个a元素let event = new MouseEvent("click"); // 创建一个单击事件a.download = name || "code"; // 设置图片名称a.href = url; // 将生成的URL设置为a.href属性a.dispatchEvent(event); // 触发a的单击事件};image.src = imgsrc;},
loadCode('.jpg','风景')

如果下载的格式不是图片格式,那么很有可能就是你的命名那里有特殊符号,这样我们就需要进行筛选掉特殊符号

    // 过滤特殊字符串foramtStr(s) {var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()&mdash;—|{}【】‘;:”“'。,、?]");var rs = "";for (var i = 0; i < s.length; i++) {rs = rs + s.substr(i, 1).replace(pattern, "");}return rs;},

2、批量下载压缩包

1、需要遍历把图片改为base64
2、创建文件夹
3、创建压缩包并下载

首先下载两个插件
file-saver和jszip,我使用的版本分别是
“file-saver”: “^2.0.5”,
“jszip”: “^3.6.0”,
页面引用
import JSZip from “jszip”;
import FileSaver from “file-saver”;

    // 图片转64进制getBase64Image(src) {return new Promise(function (resolve, reject) {var canvas = document.createElement("canvas"),ctx = canvas.getContext("2d"),img = new Image();img.crossOrigin = "Access-Control-Allow-Origin";img.onload = function () {canvas.height = img.height;canvas.width = img.width;ctx.drawImage(img, 0, 0);var dataURL = canvas.toDataURL("image/png");let deleDataHeader = dataURL.split(",")[1];resolve(deleDataHeader);canvas = null;};//这个很重要img.src =src;});},
    // 批量下载图片downLoad() {let urls = ['.jpg','.jpg','.jpg'];let promises = [];urls.map((item) => {promises.push(this.getBase64Image(item));});Promise.all(promises).then((result) => {let zip = new JSZip();// 创建压缩包let img = zip.folder("文件夹名称"); // 创建文件夹let number = 0;result.map((p) => {let i = number++;img.file(`${i}.png`, p, {base64: true,});});zip.generateAsync({ type: "blob" }).then(function (content) {// see FileSaver.jsFileSaver.saveAs(content, "下载名称.zip");});}).catch((err) => {});} },

如果你进行下载的时候遇到跨域,那么就是这样图片你没权限下载,需要后端技术人员添加cors头

更多推荐

pc端js根据图片url进行下载单张图片以及批量下载到本地

本文发布于:2023-06-20 13:00:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/801916.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:图片   批量   进行下载   pc   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!