Vue实现zip压缩下载

embedded/2024/9/23 0:44:11/

 1,安装依赖npm

//jszip是一个用于创建、读取和编辑.zip文件的JavaScript库
https://stuk.github.io/jszip/
npm install jszip   
https://www.npmjs.com/package/file-saver
npm install file-saver

2,在所需的页面中引入对应包

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

3,执行打包方法

arrImages:[{fileUrl:'图片地址',renameFileName:'图片名'}]
filename:'打包名'
this.filesToRar(arrImages, "相册");
filesToRar(arrImages, filename) {let _this = this;let zip = new JSZip();let cache = {};let promises = [];let times = 1;var setIme = setInterval(() => {times++;console.log(times);}, 1000);for (let item of arrImages) {const promise = _this.getImgArrayBuffer(item.fileUrl).then(data => {// 下载文件, 并存成ArrayBuffer对象(blob)zip.file(item.renameFileName, data, { binary: true }); // 逐个添加文件cache[item.renameFileName] = data;});promises.push(promise);}Promise.all(promises).then(() => {zip.generateAsync({ type: "blob" }).then(content => {// 生成二进制流FileSaver.saveAs(content, filename); // 利用file-saver保存文件  自定义文件名this.$notify.close();this.$notify({message: "压缩完成"});window.clearInterval(setIme);});}).catch(res => {this.$notify({message: "文件压缩失败"});});},//获取文件blobgetImgArrayBuffer(url) {let _this = this;return new Promise((resolve, reject) => {let xmlhttp = new XMLHttpRequest();xmlhttp.open("GET", url, true);xmlhttp.responseType = "blob";xmlhttp.onload = function() {if (this.status == 200) {resolve(this.response);} else {reject(this.status);}};xmlhttp.send();});},

效果:


http://www.ppmy.cn/embedded/103161.html

相关文章

Java重修笔记 第四十二天 LinkedList 类、ArrayList 和 LinkedList 比较

LinkedList 类 1. LinkedList 类底层是一个双向链表 2. LinkedList 类中有两个属性 first 和 last ,他们分别指向首节点和尾节点 3. 每个结点(LinkedList 的内部类 Node 对象)中有三个属性,prev 指向前一个结点、next 指向后一…

SSH和Git的基本知识

教程 PPT-lec2 - 2023秋冬实用技能拾遗 (tonycrane.cc) B站视频 SSH安全外壳协议 概念 SSH 全称 secure shell,安全外壳协议(安全的shell),是一个计算机网络协议(默认端口号为22)。通过ssh协议可以在客…

rust版本升级

看起来你在尝试更新 Rust 工具链时遇到了一些问题。具体来说,rustup 似乎在更新现有的 1.76.0 版本,而不是安装新的 1.80.0 版本。让我们一步一步来解决这个问题。 1. 确认当前工具链 首先,确认你当前的工具链版本: rustup sho…

【香橙派系列教程】(二十一) 基于OrangePi Zero2的系统移植— 交叉编译工具链配置

【二十一】基于OrangePi Zero2的系统移植— 交叉编译工具链配置 文章目录 【二十一】基于OrangePi Zero2的系统移植— 交叉编译工具链配置1.关于编译2.本地编译3.交叉编译 1.关于编译 编译是指将源代码文件(如C/C文件)经过预处理、编译、汇编和链接等步…

redis的RDB快照配置详解

Redis 的 RDB(Redis Database Backup)快照是一种数据持久化方式,它可以在指定时间间隔内将内存中的数据快照保存到磁盘。这样,即使Redis服务器意外宕机或重启,数据也能从最近的快照中恢复。RDB快照的配置主要涉及以下几…

力扣题/回溯/组合总和

组合总和 力扣原题 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…

Netlify 为静态站点部署 Waline 评论系统

目录 1 准备工作2 简介2.1 Netlify2.2 Waline2.3 Leancloud 3 开始搭建3.1 Fork 仓库3.2 设置 Leancloud3.3 部署 Netlify3.4 查看评论系统 从我建成个人网站以来,一个月了,竟然还没配置过评论系统,一直用的别人的 awa。 那么今天就稍微研究…

服务器多核多线程跟高主频的有何区别?

在服务器领域,多核多线程与高主频是两个重要的性能指标,它们各自在提升服务器性能上扮演着不同的角色。了解这两者的区别,对于选择合适的服务器以满足特定业务需求至关重要。 一、多核多线程的优势 多核多线程服务器指的是拥有多个处理器核心…