vue3中使用jszip压缩文件

news2025/2/27 5:03:46

1、安装依赖

npm install jszip
npm install file-saver --save

2、使用

<template>
	<el-card class="mb15">
		<template #header>
			<span>jszip</span>
		</template>
        <!-- 二维码容器 -->
        <div id="qrCodeBox"></div>
    </el-card>
</template>

<script setup lang="ts" name="demoView">
import { ref, onMounted } from 'vue'
import QRCode from 'qrcodejs2-fix';
import html2canvas from 'html2canvas';
import JSZip from 'jszip'
import { saveAs } from 'file-saver';

const getQrCode = async () => {
    // 清空二维码容器内容
	document.getElementById('qrCodeBox').innerHTML = '';
	new QRCode(document.getElementById('qrCodeBox'), {
		//需要编码的文字内容或者URL
		text: '生成二维码',
		width: 200, //二维码宽
		height: 200, //二维码高
        colorDark: '#000000',
        colorLight: '#ffffff',
        correctLevel: QRCode.CorrectLevel.H
	});
    // 如果在dialog里展示二维码图片,则需要注意使用nextTick
};

const  base64img = ref()
const screenshot = async () => {
    html2canvas(document.querySelector('#qrCodeBox')).then(canvas => {
        base64img.value = canvas.toDataURL().replace(/^data:image\/(png|jpg);base64,/, '')
        // 打压缩包
        tozip()
        // 如果打包多张截图,参考代码如下
        /*
            printImg(arr) {
                const base64Array = [];
                arr.forEach(item => {
                    let el = document.querySelector(`#zip${item.id}`)
                    html2canvas(el).then(canvas => {
                        base64Array.push({
                            name: `${item.id}.png`,
                            data: canvas.toDataURL().replace(/^data:image\/(png|jpg);base64,/, '')
                        });
                        if(base64Array.length == arr.length) {
                            this.downloadZip(base64Array,'二维码')
                        }
                    })
                })
            },
        */
    })
}

const tozip = () => {
    const zip = new JSZip();
    
    zip.file('1.png', base64img.value, { base64: true });
    zip.generateAsync({ type: 'blob' }).then(content => {
        saveAs(content, `压缩包.zip`)
    })
}

onMounted(async () => {
    // 生成二维码
    await getQrCode()
    // 截图
    await screenshot()
})
</script>

<style lang="scss" scoped>
#qrCodeBox {
    width: 200px;
    height: 200px;
}
</style>

3、页面

 4、效果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你,解决C盘分区不足,C盘怎么扩大磁盘分区

由于在磁盘分区中&#xff0c;C盘是很重要的一个磁盘&#xff0c;为了保证C盘有足够的磁盘分区。其中扩大C盘分区很常见的操作之一。那么&#xff0c;C盘怎么扩大磁盘分区&#xff1f;在本文中&#xff0c;易我小编将全面地讲解C盘合并分区的方法。 一、为什么C盘怎么扩大磁盘分…

通过openssl生成pfx证书

通过centos7上自带的openssl工具来生成。首先创建一个pfxcert目录。然后进入此目录。 1.生成.key文件&#xff08;内含被加密后的私钥&#xff09;&#xff0c;要求输入一个自定义的密码 [rootlocalhost cert]# openssl genrsa -des3 -out server.key 2048 Generating RSA priv…

Win10+VS2019+Qt5.15.2下编译QCAD

一&#xff1a;官方说法&#xff1a;WindowsDownload and install a C compiler, for example:Visual Studio C Express or Visual Studio CommunityDownload and install Qt from qt.io (see supported platforms):Download for example the online installer fileqt-opensour…

2022年中国前10电商GMV总结

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 1&#xff0c;阿里8万亿;2&#xff0c;京东3万亿;3&#xff0c;拼多多3万亿;4&#xff0c;小程序私域电商3万亿;5&#xff0c;抖音电商1.4万亿。6&#xff0c;抖音本地生活服务电商600亿。7&#xf…

CAN总线通信

CAN总线通信 CAN 是控制器局域网络&#xff08;Controller Area Network&#xff09; 的缩写&#xff0c;是 ISO 国际标准化的串行通信协议。 CAN是半双工通信 CAN总线特点 (1) 多主控制 在总线空闲时&#xff0c;所有的单元都可开始发送消息&#xff08;多主控制&#xf…

Linux追踪技术 ftrace 原理

文章目录一、ftrace架构二、Ring Buffer三、tracer原理3.1 静态插桩3.2 动态插桩四、trace event五、kprobe event参考资料一、ftrace架构 Linux ftrace中&#xff0c;trace类型最基础的就是&#xff1a;tracer和event这两类。如下图所示&#xff1a; tracer发展出了function、…

界面控件DevExpress WPF Pivot Grid——拥有强大多维数据分析能力!

界面控件DevExpress WPF的Pivot Grid组件是一个类似excel的数据透视表&#xff0c;用于多维数据分析和跨选项卡报表生成。它拥有众多的布局自定义选项&#xff0c;允许开发者完全控制其UI且以用户为中心的功能使其易于部署。PS&#xff1a;DevExpress WPF拥有120个控件和库&…

Qt中的多线程

Qt中有多种方法实现多线程&#xff1a; QThreadQThreadPool和QPunnable&#xff08;重用线程&#xff09;Qt ConcurrentWorkerScript&#xff08;QML中的线程&#xff09;QThread 在上两篇文章中已经解释了&#xff0c;这里就不再赘述。 QThreadPoo和QRunnable&#xff08;实现…

SpringBoot2核心技术-核心功能【05、Web开发】

目录 1、SpringMVC自动配置概览 2、简单功能分析 2.1、静态资源访问 1、静态资源目录 2、静态资源访问前缀 2.2、欢迎页支持 2.3、自定义 Favicon 2.4、静态资源配置原理 3、请求参数处理 0、请求映射 1、rest使用与原理 2、请求映射原理 1、普通参数与基本注解 …

PrivateLoader PPI服务发现RisePro恶意软件窃取分发信息

称为PrivateLoader的按安装付费&#xff08;PPI&#xff09;软件下载器服务正用于恶意软件RisePro的信息窃取。Flashpoint 于 2022 年 12月13日发现了新的窃取者&#xff0c;此前发现了在名为Russian Market的非法网络犯罪市场上使用该恶意软件泄露的“几组日志”。RisePro是一…

因“AI”而“深” 第四届OpenI/O 启智开发者大会高校开源专场25日开启!

中国算力网资源不断开发&#xff0c;开源社区治理及AI开源生态引来众多有才之士参与建设&#xff0c;国家级开放创新应用平台、NLP大模型等高新技术内容逐渐走向科研舞台上聚光灯的中心&#xff0c;新时代的大门缓缓打开。在启智社区&#xff0c;有一群人&#xff0c;他们年纪轻…

BEV感知:DETR3D

3D检测&#xff1a;DETR3D前言MethodImage Feature Extracting2D-to-3D Feature TransformationLoss实验结果前言 在这篇paper&#xff0c;作者提出了一个更优雅的2D与3D之间转换的算法在自动驾驶领域&#xff0c;它不依赖于深度信息的预测&#xff0c;这个框架被称之为DETR3D…

性能测试学习和性能瓶颈分析路线

很多企业招聘都只写性能测试&#xff0c;会使用LR&#xff0c;jmeter工具。其实会使用jmeter和LR进行性能测试还只是性能测试的第一步&#xff0c;离真正的性能测试工程师还很远&#xff0c;笔者也还在路上 .。 性能测试&#xff0c;都是要求测试系统性能&#xff0c;系统自然…

面试中经常被问到的【宏定义】,改变你对【C\C++】中宏定义的认识。

最近遇到挺多宏定义的代码&#xff0c;其实挺烦的&#xff0c;每次看复杂的宏定义看到一半就懵了&#xff0c;今天盘一盘它。本篇设计宏定义的原理、使用方法、使用技巧。 目录 一、宏定义原理 二、宏定义定义复杂功能函数 2.1 定义注册函数 三、宏定义实现条件编译 四、宏…

【OpenCV学习笔记01】- 初步使用OpenCV实现人脸识别

想要使用opencv实现人脸识别&#xff0c;我们需要做这样几步&#xff1a; 1.opencv-python的安装 这里我们使用的python的opencv-python库&#xff0c;在安装opencv-python库之前&#xff0c;我们需要安装numpy, matplotlib。 # 安装指令 # 安装 numpy pip install numpy # …

Chirp-Z变换(线性调频Z变换)原理

Chirp-Z变换&#xff08;Chirp-Z Transform&#xff0c;CZT&#xff09; 采用FFT算法可以很快地计算出全部DFT值&#xff0c;即Z变换在单位圆上的全部等间隔采样值。 在实际情况中&#xff0c;并不需要对整个单位圆的频谱进行分析&#xff0c;例如&#xff0c;对于窄带信号&am…

运动型蓝牙耳机推荐哪款、最新运动蓝牙耳机推荐

提起运动耳机&#xff0c;如今很多运动爱好者和职业教练员们&#xff0c;都会向萌新推荐骨传导运动耳机。骨传导耳机解决了入耳式蓝牙耳机掉落的问题&#xff0c;佩戴相当舒服。骨传导耳机在佩戴过程中解放了双耳&#xff0c;不会因为耳机堵住耳朵&#xff0c;听不到环境音&…

【Spring6】| Spring启示录、Spring概述

目录 一&#xff1a;Spring启示录 1. OCP开闭原则 2. 依赖倒置原则DIP 3. 控制反转IoC 二&#xff1a;Spring概述 1. Spring简介 2. Spring8大模块 3. Spring特点 一&#xff1a;Spring启示录 引言&#xff1a;前面我们已经学习了三层架构&#xff1a;表示层、业务层、…

【工作笔记】syslog,kern.log大量写入invalid cookie错误信息问题

任务描述 错误出现出现过四五次&#xff0c;应该是诊断单元tf卡读写出问题导致下面这条告警一直高频写入到/var/log/下的syslog、kern.log、messages中 Nov 23 06:25:12 embest kernel: omap_hsmmc 48060000.mmc: [omap_hsmmc_pre_dma_transfer] invalid cookie: data->hos…

将maven项目打包成可执行的jar(加入外部依赖)

在有些场景下我们需要将编写的Java工程编译打包成为一个完整的jar包&#xff0c;如果你的项目是使用maven构建的话可以通过以下方法来完成这个打包的过程。添加maven打包插件。在项目的pom.xml配置文件的build标签中添加以下代码&#xff0c;其中 mainClass 属性需要替换成你项…