VUE+jszip实现下载多个文件导出为一个zip格式

JS || nodeJs实现下载zip压缩包 axios用于发起请求根据url拿到zip包 jszip用于解压zip文件 path用于路径配置 fs用于文件写入到指定路径。 阅读详情

项目需求:将多个文件/图片导出为一个zip格式压缩包,点击<下载全部附件>按钮下载上面三个文件

在这里插入图片描述

1、安装jszip和file-saver插件

npm install jszip
npm install file-saver

2、在所需页面引入

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

3、模拟fileList数组

//fileList模拟文件数组
  export default {
    name: "notice-list",
    data() {
      return {
	      fileList: [
	      {
	        fileName: '3.jpg',
	        feilePath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
	      },
	      {
	        fileName: '5.jpg',
	        feilePath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
	      },
	      {
	        fileName: '测试2.doc',
	        feilePath: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
	      }
	    ],
      }
    }
}

4、 在methods中定义方法

     // 下载全部附件   downloadBtn<下载全部附件>按钮绑定事件
      downloadBtn() {
        var blogTitle = `全部附件`; // 下载后压缩包的名称
        var zip = new JSZip();
        var promises = [];
        let cache = {};
        for (let item of this.fileList) {
          // item.feilePath为文件链接地址
          // item.fileName为文件名称
          if(item.feilePath) {
            const promise = this.getImgArrayBuffer(item.feilePath).then((data) => {
              // 下载文件, 并存成ArrayBuffer对象(blob)
              zip.file(item.fileName, data, { binary: true }); // 逐个添加文件
              cache[item.fileName] = data;
            });
            promises.push(promise);
          } else {
          // feilePath地址不存在时提示
            alert(`附件${item.fileName}地址错误,下载失败`);
          }
        }
        Promise.all(promises).then(() => {
          zip.generateAsync({ type: "blob" }).then((content) => {
            // 生成二进制流
            FileSaver.saveAs(content, blogTitle); // 利用file-saver保存文件  blogTitle:自定义文件名
          });
        }).catch((res) => {
          alert("文件压缩失败");
        });
      },
      //文件以流的形式获取(参数url为文件链接地址)
      getImgArrayBuffer(url) {
        return new Promise((resolve, reject) => {
          //通过请求获取文件blob格式
          let xmlhttp = new XMLHttpRequest();
          xmlhttp.open("GET", url, true);
          xmlhttp.responseType = "blob";
          xmlhttp.onload = function () {
            if (xmlhttp.status == 200) {
              resolve(xmlhttp.response);
            } else {
              reject(xmlhttp.response);
            }
          };
          xmlhttp.send();
        });
      },

5、复制粘贴可用,看过其它教程有一部分版本都是存在错误的,所以修改了一部分

前端vue实现附件打包下载成zip 前言 因前端需要同时下载大量的docx附件,之前的实现方式是每个从后端拿流回来循环再前端download。可是发现超过10个附件就会出现附件丢失的问题,所以选择用打包下载成zip来实现。 贴图 使用步骤 一、引入 jszip 和 file-saver npm i jszip -sor yarn add jszip -s npm i file-saver -s or yarn add file-saver -s 二、使用 importJSZipfrom'jszip' ... 阅读详情

相关推荐

Vue3 - 详细实现将多个文件批量导出为ZIP压缩包格式并下载功能,vue3将文件批量下载打包成ZIP下载保存本地,下载多个文件打包输出成zip格式(支持二进制文件流/base64图片/文件URL)

vue3,nuxt3,vue3批量导出文件打包成压缩包,Vue3中如何批量导出文件(图片/PDF)并打包压缩成ZIP,实现多张图片导出zip文件,vue3导出pdf文件很多如何变成导出一个zip文件,jszip插件文档流,vue3中下载多个文件打包为一个zip,Vue3中将文件批量下载打包成zip格式,批量下载图片并打包成压缩包,vue3导出多个pdf或excel打包成zip压缩包进行下载,批量下载文件并打压缩包,vue3中如何批量下载文件并生成zip格式文件,文件通过服务端接口返回二进制文件流如何处理,文

🏆 前端领域优质创作者 1万+

vue中的jszip使用

【代码】vue中的jszip使用。

atzw1988love的博客 2117

Vue2 - 最新实现将多个文件批量导出为ZIP压缩包格式并下载功能,纯前端下载多个文件打包输出成zip格式,vue2将文件批量下载打包成ZIP下载保存本地(后端二进制文件流/base64图片/url

vue,vue2批量导出文件打包成压缩包,Vue中将文件批量下载打包成zip格式,批量下载图片并打包成压缩包,vue导出多个pdf或excel打包成zip压缩包进行下载,批量下载文件并打压缩包,vue中如何批量下载文件并生成zip格式文件,文件通过服务端接口返回二进制文件流如何处理,批量文件打包压缩,Vue中如何批量导出文件(图片/PDF)并打包压缩成ZIP,vue项目实现多张图片导出zip文件,vue导出pdf文件很多如何变成导出一个zip文件,jszip插件处理文档流,vue中下载多个文件打包为一个zi

🏆 前端领域优质创作者 1万+

vue+jszip完成文件压缩

vue+jszip完成文件压缩

分析日常工作常遇到问题和解决方案 820

JavaScript压缩库jszip

JavaScript压缩库jszip,最后一版v3.10.1

在vue.js中使用JSZip实现在前端解压文件的方法

1、 在vue文件的html中引入element的上传控件,代码如下: 点击上传 上传一个zip试一下 2、 在项目中引入JSZip工具以便于调用其接口实现文件的解

vue 获取服务端多个数据文件导出为一个zip文件

多文件下载为一个zip

tonysh_zds的博客 724

医疗影像处理实战:如何用Slicer和Mimics将.nii.gz文件转为.ply格式(附避坑指南)

本文详细介绍了利用3D Slicer和Materialise Mimics软件,将医学影像中常见的.nii.gz格式文件转换为通用三维网格.ply格式的完整实战流程。文章重点分享了从数据分割、DICOM序列导出到高质量网格生成的核心步骤与关键参数设置,并提供了针对常见问题的避坑指南,旨在帮助医学影像研究者和工程师高效完成从体数据到三维模型的关键转换。

weixin_28304023的博客 104

vue-element使用JSZip与FileSaver批量下载文件(任何格式的文件)

步骤: 第一步: npm install JSZip npm install FileSaver 然后在组件中引入 import JSZip from "jszip"; import FileSaver from "file-saver"; 第二步: 创建一个function绑定点击事件 在浏览器中创建zip //创建zip实例化对象 const zip = new JSZip(); //调用实例化的原型链function设置自定义解压目录文件名 let imgsss = zip.folder

qq_42157868的博客 2614

深度学习入门:一文详解BP神经网络

在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层节点个数不确定,那么应该设置为多少。实际上,隐含层节点个数的多少对神经网络的性能是有影响的,有一个经验公式可以确定隐含层。上面是对隐含层和输出层之间的权值和输出层的阀值计算调整量,而针对输入层和隐含层和隐含层的阀值调。在BP神经网络中,输入层节点没有阀值。神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据。要求输入模式要有足够的随机性,对输入模式的噪声比较敏感,即对于剧烈变化的输入模式,训。

Machine Learning with Tutors 4万+

避坑指南:Spring3集成OpenAPI时泛型响应失效的3种解决方案

本文深入探讨了Spring3集成OpenAPI时泛型响应失效的问题,提供了三种实用解决方案:移除@Schema注解、使用@ArraySchema包装泛型以及自定义Schema处理器。针对不同项目规模,详细分析了各方案的适用场景、优缺点及性能影响,帮助开发者高效生成准确的接口文档,提升前后端协作效率。

weixin_30839881的博客 101

vue前端 结合 jszip,file-saver打包下载zip文件

这种打包下载文件,如果后端并没有返回arraybuffer文件格式数据,其实不太建议在前端做,因为前端用url来进行打包下载,还需要再另行发起请求。 总之是可以实现的,我们只需要借助jszip和file-saver插件即可 下面基于vue-cli创建的项目来说明,我们来看看如何实现。 让我们先在项目里安装依赖包 npm i jszip file-saver --save axios 第一种情况:直接下载文件数据 首先看第一种情况,后端直接给我们返回了zip文件格式的数据,那么这个就很简单了,在你需要下载的

东扯葫芦西扯瓜——前端小菜鸟的博客 2663

Wio-LR1121多频段LoRa模块技术解析与应用实践

LoRa技术作为低功耗广域物联网(LPWAN)的核心通信方案,通过独特的扩频调制技术实现远距离传输与强抗干扰能力。其工作原理基于CSS(Chirp Spread Spectrum)调制,支持动态调整扩频因子(SF)和带宽(BW)来平衡传输距离与数据速率。Wio-LR1121模块作为Semtech LR1121芯片的载体,创新性地整合了sub-GHz、S-Band和2.4GHz多频段支持,配合仅1.35μA的睡眠电流,为跨境物联网部署提供了硬件基础。在智慧农业、工业监测等场景中,开发者可通过SPI接口快速集成

weixin_33742618的博客 417

VUE 如何实现多个文件导出为一个zip格式并下载

/ 下载全部附件 downloadBtn按钮绑定事件var blogTitle = `学生答案批量下载`;// 下载后压缩包的名称// item.answer为文件链接地址// item.answerName为文件名称// 下载文件, 并存成ArrayBuffer对象(blob)});// 逐个添加文件});} else {// answer地址不存在时提示alert(`附件${item.answerName}地址错误,下载失败`);// 生成二进制流。

weixin_55712711的博客 1205

Codex本地部署指南:从环境配置到API集成实战

Codex作为OpenAI推出的代码生成模型,能够根据自然语言描述自动生成代码片段,大幅提升开发效率。这次我们重点分析Codex的本地部署方案、硬件门槛、接口调用方式和实际使用效果,帮助开发者判断是否值得投入时间部署。 从技术架构看,Codex基于GPT-3模型微调,专门针对代码生成任务优化。最新版本支持多种编程语言,包括Python、JavaScript、Java、C++等主流语言。对于国内开发者来说,最关心的是能否在本地环境稳定运行,以及是否需要特殊网络配置。 1. 核心能力速览 能力项 技术说明 模型

weixin_33309048的博客 527

补洞与fairing算法

对网格进行补洞,remesh, 平滑,fairing, 最小二乘优化平滑

闪电彬彬的博客 1048

vue 上传文件 zip格式 转 base64

创建vue项目 在入口文件中导入js (也可以npm 引入) 个人觉得这样方便 <script type="text/javascript" src="./static/utils/jszip.min.js"></script> 将页面内容加入压缩包并且转换成base64传给后台 <input type="file" @change="afterRead()...

weixin_42260396的博客 3414

半导体行业周期分析:库存、需求与复苏路径深度解读

半导体行业作为现代科技产业的基石,其周期性波动受供需关系、库存水平和宏观经济等多重因素影响。从技术原理上看,行业景气度通常通过库存周转天数、晶圆厂产能利用率等核心指标进行监测,这些指标反映了产业链各环节的健康状况。在工程实践中,理解这些指标有助于企业进行库存管理和产能规划,从而提升运营效率。当前,半导体市场正经历结构性分化,其中**库存周转天数**和**晶圆厂产能利用率**成为判断市场拐点的关键。在应用场景上,汽车电子、人工智能等领域需求相对稳健,而消费电子则面临较大压力。本文聚焦于半导体行业的周期特征,探

weixin_29549793的博客 696

vue-element使用JSZip与FileSaver批量下载文件(任何格式的文件)_jszip filesave配合下载多个url

1.遍历urllist将url通过js原生对象new XMLHttpRequest() 创建一个请求实例 将url做为请求接口发出请求得到base64 bold格式的文档字符串(就是这个url的所有内容如文件大小 文件格式等数据)3.在异步 zip.generateAsync中传入({type:blod})方法中.then拿到生成的二进制流,以参数的形式传入 FileSaver.saveAs(二进制流,编写业务逻辑代码 批量导出一般都会拿到一个urlList处理。在浏览器中创建zip。

2401_85015212的博客 661

【Unity工具篇】| 使用YooAsset接入自己的游戏项目,实现完整热更新流程

前面文章介绍了YooAsset的原理和接入官方示例文档的文章介绍,本文使用YooAsset接入自己的游戏项目做示例。 【Unity工具篇】| 资源管理插件YooAsset,原理及相关配置 【Unity工具篇】| 游戏完整资源热更新流程,YooAsset官方示例项目 具体接入方法有很多种,本文会参照官方示例 Space Shooter 太空战机DEMO 用到的方式接入自己的游戏项目。

努力前行,总会成为自己心中的那道光 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

vue前台导出zip文件_如何在vue项目中使用jszip对文件进行加压和解压

jszip-in-vue本文主要介绍jszip在vue中如何使用本文涉及到Promise对象和async函数的使用,建议先提前去了解一下关于jszip的使用官方文档已经介绍的非常详细了,而且也有示例:https://stuk.github.io/jszip/...我这里主要是结合项目的需求然后抽离出来的demo,主要是对图片的加压和解压解压使用.loadAsync(data)可以加载zip文件,d...

weixin_39563420的博客 981

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

vue 多文件下载zip格式

场景:多图片时,下载成一个zip压缩包文件。

qq_58340302的博客 1337

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vue下将图片打包为zip进行下载

需要使用到的技术: import JSZip from "jszip"; import FileSaver from "file-saver"; 使用函数,上代码 传入数据格式如下: [{name:"你的图片名称,不能重复",baseImg:"后端传输给你的base64图片"}] //批量下载门店二维码转化 StoreDowQrcode(arr, blogTitle = "二维码"...

海天酱油zz 5490

vue前台导出zip文件_Vue项目中下载并压缩多张图片为.ZIP文件

接触到一个项目需要同时下载多张ECharts图片我是用的ECharts的导出图片为base64并将数组进行一个下载并压缩首先安装两个依赖import JSZip from 'jszip'import FileSaver from 'file-saver'因为是模拟所以在data中我模拟了两条数据,base64太长了,我删减了一下 见谅img_list: [{name: '图片一',baseImg:...

weixin_34044446的博客 785

vue中多个文件链接打包为一个zip压缩包下载

vue中多个文件链接打包为一个zip压缩包下载 一、安装依赖:npm install --save axios JSZip FileSaver 二、在文件中引入模块axios JSZip FileSaver import axios from 'axios' import JSZip from 'jszip' import FileSaver from 'file-saver' export default{ data(){ urlList :[ 'https://fuss10.

weixin_43901550的博客 1865
上一篇: 网页置灰-css样式
下一篇: vue打包后线上报错Error: Loading chunk 20 failed
前端小小白~
博客等级 码龄7年 16粉丝 24原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值