【vue】vue项目批量下载二维码,且打包成压缩包.

在这里插入图片描述

一. 先看效果演示

在这里插入图片描述

二. 下插件
npm i vue-qr -S // 二维码显示插件 我的版本^4.0.9
npm i html2canvas -S // 将二维码转为图片 我的版本^1.4.1
npm i file-saver -S // 下载图片 我的版本^2.0.5
npm i jszip -S // 打包成压缩包 我的版本^3.10.1
// 一次性下载
npm i vue-qr html2canvas file-saver jszip -S

三. 批量显示二维码

来一个el-dialog

      <!-- 二维码列表 -->
      <el-dialog title="机构二维码" :visible.sync="qrDialog" width="64%" :modal="true" :close-on-click-modal="false" v-dialogDrag center>
        <div class="qrList">
          <div v-for="item in qrImgList" :key="item.index" :ref="'canvas' + item.id">
            <span>{{ item.name }}</span>
            <vue-qr :text="item.text" :size="200" :margin="0" />
          </div>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="qrDialog = false">关 闭</el-button>
          <el-button type="primary" @click="qrConfirmClk">全部下载</el-button>
        </span>
      </el-dialog>
      <script>
		import VueQr from 'vue-qr'
		import { saveAs } from 'file-saver'
		import html2canvas from 'html2canvas'
		import JSZip from 'jszip'
		export default {
		  components: { VueQr },
		  data(){
			return{
		      qrDialog: false,
			  qrImgList: [],
			}
		  }
		}
      </script>
四. 批量下载二维码并打包成zip
    // 批量下载二维码
    qrConfirmClk() {
      const zip = new JSZip()
      const imgFolder = zip.folder('images')
      let flag = 0
      for (let i = 0; i < this.qrImgList.length; i++) {
        html2canvas(this.$refs[`canvas${this.qrImgList[i].id}`][0]).then((canvas) => {
          let base64 = canvas.toDataURL('image/png')
          base64 = base64.split('base64,')[1]
          imgFolder.file(this.qrImgList[i].name + '.png', base64, { base64: true }) // 文件名
          if (flag === this.qrImgList.length - 1) {
            zip.generateAsync({ type: 'blob' }).then((blob) => {
              saveAs(blob, '二维码图片.zip') // 压缩包名字
            })
          }
          flag++
        })
      }
    },

ok,结束.记录下

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
批量二维码打包,你可以使用以下步骤: 1. 安装 vue-qr 插件:在命令行中运行 `npm install vue-qr --save`,或者在项目目录下运行 `yarn add vue-qr`。 2. 创建一个二维码器组件:在 Vue 应用中创建一个新的组件,用于批量二维码。在组件中使用 vue-qr 插件来生二维码。 3. 创建一个数据源:在组件中创建一个数据源,用于存储所有要生二维码的数据。可以使用数组或对象存储数据。 4. 使用 v-for 指令循环生二维码:在组件中使用 v-for 指令循环遍历数据源,使用 vue-qr 插件生二维码,并将生二维码添加到页面中。 5. 打包二维码:在组件中添加一个按钮,当用户点击按钮时,使用 jszip 插件将所有二维码打包一个压缩文件,并将文件下载到本地。 以下是一个简单的示例代码: ```html <template> <div> <div v-for="(data, index) in dataSource" :key="index"> <p>{{ data.name }}</p> <qrcode :value="data.code"></qrcode> </div> <button @click="handleDownload">Download</button> </div> </template> <script> import VueQr from 'vue-qr' import JSZip from 'jszip' import FileSaver from 'file-saver' export default { components: { VueQr }, data() { return { dataSource: [ { name: 'Qrcode 1', code: 'https://www.example.com/1' }, { name: 'Qrcode 2', code: 'https://www.example.com/2' }, { name: 'Qrcode 3', code: 'https://www.example.com/3' } ] } }, methods: { handleDownload() { const zip = new JSZip() this.dataSource.forEach((data, index) => { const imgData = this.$refs[`qrcode${index}`][0].$el.toDataURL() zip.file(`${data.name}.png`, imgData.substr(imgData.indexOf(',') + 1), { base64: true }) }) zip.generateAsync({ type: 'blob' }).then((content) => { FileSaver.saveAs(content, 'qrcodes.zip') }) } } } </script> ``` 在上述示例代码中,我们使用了 vue-qr 插件来生二维码,使用 jszip 插件将所有二维码打包一个压缩文件,并使用 file-saver 插件将文件下载到本地。注意,我们使用了 $refs 来获取每个二维码组件的实例,并将实例转换为图片数据进行打包

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨同学*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值