vue多个文件打包成zip压缩包

该代码段展示了一个JavaScript函数,用于将多个canvas元素中的二维码图片转换为jpg格式,存储到zip文件中,并利用FileSaver库让用户下载这个包含所有二维码的.zip文件。过程中涉及到base64转blob的转换操作。
摘要由CSDN通过智能技术生成
downloadClick() {
        const zip = new JSZip();
        const promises = [];
        this.downloadimgs.forEach((item) => {    //this.downloadimgs为保存的数据
          // 先找到canvas节点下的二维码图片
          const myCanvas = document
            .getElementById(item.id)
            .getElementsByTagName('canvas');
          // 创建一个a节点
          const a = document.createElement('a');
          // 设置a的href属性将canvas变成png格式
          const imgURL = myCanvas[0].toDataURL('image/jpg');
          a.download = item.id + '.jpg';
          const blob = this.base64ToBlob(imgURL);
          const promise = zip.file(a.download, blob, { binary: true }); //文件名、文件流、是否为二进制
          promises.push(promise);
        });
        Promise.all(promises).then(() => {
          zip.generateAsync({ type: 'blob' }).then((content) => {
            // 生成二进制流
            FileSaver.saveAs(content, '二维码.zip'); // 利用file-saver保存文件
          });
        });
      },
      base64ToBlob(code) {
        let parts = code.split(';base64,');
        let contentType = parts[0].split(':')[1];
        let raw = window.atob(parts[1]);
        let rawLength = raw.length;
        let uInt8Array = new Uint8Array(rawLength);
        for (let i = 0; i < rawLength; ++i) {
          uInt8Array[i] = raw.charCodeAt(i);
        }
        return new Blob([uInt8Array], {
          type: contentType
        });
      },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值