qrcode.react组件生成的二维码打包下载
需求
- 用 qrcode.react 组件生成二维码
- 前端实现批量打包下载二维码功能
- qrcode.react 组件生成的二维码默认是 canvans
- 将 canvans 转成 base64
- 然后整合放入到 JSZip 对象里
- 最后生成 zip 文件并通过 file-saver 下载到本地
qrcode.react
二维码生成的 react 组件jszip
用来打包压缩的一个库file-saver
文件保存下载的插件库
1.头部引入
import JSZip from 'jszip';
import FileSaver from 'file-saver';
import Qrcode from 'qrcode.react';
2.react render
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");
});
推荐阅读
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- ssh生成公钥秘钥
- 动态组件与v-once指令
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- vue组件中为何data必须是一个函数()
- (六)Component初识组件
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- vuex|vuex 基础结构
- SwiftUI|SwiftUI iOS 瀑布流组件之仿CollectionView不规则图文混合(教程含源码)