首页 > 其他分享 >JSZIP打包下载图片

JSZIP打包下载图片

时间:2022-11-23 17:01:00浏览次数:40  
标签:canvas const err image JSZIP item 打包 selectedList 下载

import moment from 'moment';
import JSZip from 'jszip';
import saveAs from 'jszip/vendor/FileSaver';

  const getFile = useCallback((url) => {
    return new Promise((resolve, reject) => {
      try {
        const image = new window.Image();
        image.crossOrigin = 'Anonymous';
        image.src = url;
        image.onload = () => {
          const canvas = document.createElement('canvas');
          canvas.width = image.width;
          canvas.height = image.height;
          const ctx = canvas.getContext('2d');
          ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
          const dataURL = canvas.toDataURL();
          resolve(dataURL.substring(22));
        };
      } catch (err) {
        reject(err);
      }
    });
  }, []);

  const batchDown = () => {
    const selectedList = [{id:1,picName:'http://127.0.0.1/1.jpg'},{id:2,picName:'http://58.33.264.241:9844/2.jpg'}];
    if (!selectedList || selectedList.length === 0) {
      console.log('请选择异常数据');
      return;
    }
    const zip = new JSZip();
    const promises = [];
    const cache = {};
    for (const item of selectedList) {
      const url = item.picName;
      const promise = getFile(url).then((data) => {
        zip.file(item.id + '.jpg', data, { base64: true });
        cache[item.id] = data;
      });
      promises.push(promise);
    }
    const zipName = moment().format('YYYY-MM-DD HH:mm:ss');
    Promise.all(promises)
      .then(() => {
        zip.generateAsync({ type: 'blob' }).then((content) => {
          // 生成二进制流
          saveAs(content, zipName); // 利用file-saver保存文件
        });
      })
      .catch((err) => {
        console.log('导出失败', err);
      });
  };

 

标签:canvas,const,err,image,JSZIP,item,打包,selectedList,下载
From: https://www.cnblogs.com/shi2310/p/16918937.html

相关文章

  • 前端下载图片或pdf而不是预览方法
    一、下载pdf时使用 a 链接的 download 方法调用:this.downloadFile_2('文件名','url链接')本地无法下载的话,可以试试放到线上文件名要加 .pdf 后缀//fileName是......
  • Vue和Electron分离开发,一起打包
    分别安装Vue和Electron参照地址:https://cn.vuejs.org/guide/quick-start.html#creating-a-vue-applicationhttps://www.electronforge.io/npminitvue@latestnpmin......
  • 使用Jenkins构建镜像:将应用打包成镜像
    学习某册子的CICD,记录使用Jenkins构建镜像的过程。使用Jenkins集成Git来构建Docker镜像,为后面的部署准备镜像资源。1.安装Nodejs环境如果想要安装Node环境,有以下两个办......
  • 使用rsync下载PDB数据库
    使用rsync下载PDB数据库biolearn0.1062018.05.2815:56:30字数221阅读2,8272018.5.28星期一多云biolearn从PDB数据库下载复合物的结构有两种方式,一是......
  • 记录一下webpack打包worker-loader失败的问题
     报错信息:Modulebuildfailed(from./node_modules/thread-loader/dist/cjs.js):ThreadLoader(Worker0)Cannotreadpropertiesofundefined(reading'createChi......
  • anaconda 版本去清华大学镜像站下载
    Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror官网下载的windows最新版本,安装时会卡住。所以去清华镜像下载早期2020版本。 ......
  • [oeasy]python0019_ 打包和解包_struct_pack_unpack
    ​ 打包和解包回忆上次内容ASCII由这样几类字符构成英文大写字符英文小写字符数字符号电报时代对于英文、数字的编码使用的是摩斯电码​编辑这摩......
  • nginx禁止PDF文件直接打开,而是下载
    在nginx.conf文件中加入下面代码location/{if($request_filename~*^.*?\.(html|doc|pdf|zip|docx)$){add_headerContent-......
  • Springboot 打包细节
    这里是打包关键备注一篇文章带你认识SpringBoot打包成的可执行jar,不能被其他项目依赖https://blog.csdn.net/nanhuaibeian/article/details/109310112需要注意,......
  • Maxwell电磁分析软件下载安装教程(附Crack文件)
    Maxwell16.0WIN1064位安装步骤:1.Maxwell_16软件安装包到电脑磁盘根目录或英文路径文件夹下,并解压缩,然后双击打开Maxwell_160文件夹2.然后找到Autorun.exe,鼠标右击选择......