qrcode.react组件生成的二维码打包下载

需求

  1. 用 qrcode.react 组件生成二维码
  2. 前端实现批量打包下载二维码功能

思路

  1. qrcode.react 组件生成的二维码默认是 canvans
  2. 将 canvans 转成 base64
  3. 然后整合放入到 JSZip 对象里
  4. 最后生成 zip 文件并通过 file-saver 下载到本地

所需依赖包

  1. qrcode.react 二维码生成的 react 组件
  2. jszip 用来打包压缩的一个库
  3. file-saver 文件保存下载的插件库

主要代码

1.头部引入

import JSZip from 'jszip';
import FileSaver from 'file-saver';
import Qrcode from 'qrcode.react';

2.react render

<Qrcode
    renderAs="canvas"
    className="qrcode"
    name="001"
    value="address1"
/>
<Qrcode
    renderAs="canvas"
    className="qrcode"
    name="002"
    value="address2"
/>
<Qrcode
    renderAs="canvas"
    className="qrcode"
    name="003"
    value="address3"
/>

3.下载 js 代码

// 1. 获取canvas元素
const canvans = document.querySelectorAll(".qrcode");
if (!canvans.length) {
  return alert("elements is empty!");
}

// 2. 将每个canvans生成base64格式、并且放入到JSZip里
const zip = new JSZip();
// const zipDir = zip.folder('qrcode'); // 也可以生成子文件夹
for (const canvan of canvans) {
  const item = {
    data: canvan.toDataURL().substring(22), // substring(22) 是去掉base64头部
    name: canvan.getAttribute("name"),
  };
  // 放到jszip对象里
  zip.file(item.name + ".png", item.data, {
    base64: true,
  });
}

// 3. 以二进制形式保存、并且通过file-saver下载到本地
zip.generateAsync({ type: "blob" }).then(function (content) {
  FileSaver.saveAs(content, "qrcodes.zip");
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小兔子的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值