vue 二维码生成、压缩、下载

本文介绍如何使用 qrcodejs2 生成二维码,并利用 JSZip 和 FileSaver 将多个二维码图片压缩成一个 ZIP 文件进行下载。文章展示了具体的实现步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要工具

生成二维码 QRcode
文件压缩 JSZip
文件下载 FileSaver

下载

npm install qrcodejs2    // 生成二维码 
npm install jszip  // 文件压缩
npm install file-saver  // 文件下载

引入

需要的页面直接引入

import QRCode from "qrcodejs2";
import JSZip from "jszip";
import FileSaver from "file-saver";

二维码生成

  <div id="qrcodes" style="display:none"></div>
// 第一个值为 绑定dom 的id 
  new QRCode("qrcodes", {
    width: 130, //宽
    height: 130, //高
    text: str // 二维码内容
  })

全部代码 直接 使用

注意事项:1、zip.file() 第一个参数必须为唯一值

<template>
  <div>
    <div id="qrcodes" style="display:none"></div>
    <!--隐藏式-->
  </div>
</template>

<script>
import QRCode from "qrcodejs2";
import JSZip from "jszip";
import FileSaver from "file-saver";

export default {
  components: {},
  data() {
    return {
      arr: ["1", "2", "3", "4"], // 二维码的内容
      qr: [] // 存放生成的二维码数据
    };
  },
  computed: {},
  watch: {},
  mounted() {
    // 遍历二维码内容 生成 二维码数据
    this.arr.map(item => {
      this.createCode(item);
    });
    // 判断二维码是否存在
    if (this.qr.length > 0) {
      // 存在则下载
      this.downFiles();
    }
  },
  methods: {
    // 生成二维码
    createCode(str) {
      console.log("生成了么");
      // 把所有的二维码放入qr中
      this.qr.push(
        new QRCode("qrcodes", {
          width: 130, //宽
          height: 130, //高
          text: str // 二维码内容
        })
      );
    },
    // 下载
    downFiles() {
      // 创建一个JSZip的实例
      const zip = new JSZip();
      var Num = 0 // 序号
      this.qr.forEach(item => {
        // 循环是指zip文件名和文件路径
        zip.file(       //   zip文件名 必须是唯一值  所以 这里 用了Num++   可以用后台传过来的唯一编码
          Num++ + ".png",
          item._oDrawing._elCanvas
            .toDataURL("image/png")
            .replace(/^data:image\/(png|jpg);base64,/, ""),
          { base64: true }
        );
      });
      //  生成一个zip 文件
      zip.generateAsync({ type: "blob" }).then(content => {
        window.alert('文件下载成功')
        //  第一个参数:保存的文件  第二个参数 文件名
        FileSaver.saveAs(content, "券码.zip");
      });
    }
  }
};
</script>

<style lang='scss' scoped>
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值