vue3批量导出文件,打包成压缩包

news2025/1/21 7:23:09

1.下载插件

npm install jszip
npm install file-saver

2.封装方法

新建一个exportFileZip.js文件

// 引入实现下载压缩包的两个库
import JSZip from 'jszip';
import FileSaver from 'file-saver';
// 引入请求模块
import axios from 'axios'
// 实现下载压缩包按钮的方法 fileArr 需要下载的文件数组 exportName 导出的压缩包名 fileUrl 文件路径 fileName 文件名 
export function downloadZip(fileArr,exportName,fileUrl,fileName) {
  const zip = new JSZip();
  const promises = [];  // 用于存储多个promise
  const arr = fileArr.filter(item => item[fileUrl]!==''); // 将需要下载的文件路径存到数组中
  console.log('arr',arr);
  arr.forEach( item => { 
    const promise = new Promise((resolve, reject) => {
      // 实现下载单个文件
      axios ({
        url: item[fileUrl],
        method: 'GET',
        responseType: 'blob'
      }).then((res) => {          // request请求的状态
        resolve(res)
      }).catch((error) => {
        reject(error)
      })
    }).then((res) => {            
      // 单个文件下载成功,拿到内容命名后转为二进制存储
      const name = item[fileName];
      // 在此处可以设置压缩包文件夹  zip.file(文件夹名/文件名, 文件内容 ,{配置项});
      zip.file(name, res.data ,{binary: true});
    })
    // 将单个promise存到数组中,后续使用promise.all判断整体状态
    promises.push(promise);
  })
  Promise.all(promises).then(() => {
    // 将压缩包里的文件压缩,返回一个promise实例,成功结果res返回的就是压缩包
    zip.generateAsync({
      type: "blob",
      compression: "DEFLATE",  // STORE:默认不压缩 DEFLATE:需要压缩
      compressionOptions: {
        level: 9               // 压缩等级1~9    1压缩速度最快,9最优压缩方式
      }
    }).then((res) => {
      FileSaver.saveAs(res, exportName) // 利用file-saver保存文件
    })
  })
}

3.使用

import { downloadZip } from '@/utils/exportFileZip'; // 引入封装的方法

// 批量下载
const batchDown = () => {
  downloadZip(datas.fileData, '附件.zip', 'attachmentUrl', 'attachmentName');
};

说明:第一个参数(datas.fileData)是数组对象,存储着文件名和下载地址;

第二个参数是导出的压缩包名称

第三个参数是文件下载地址的属性名

第四个参数是文件名的属性名

第二个参数需要加上后缀名,第三、第四个参数是对应的属性名

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

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

相关文章

kotlin实现猜数游戏

游戏规则 1.程序随机生成一个1到100的数字,作为MagicNumber 2.用户根据提示输入数据,只有三次机会输入数据 代码 代码很简单,使用了let内置函数 fun main() {//生成随机数可以使用java的方法//val magicNumber Random().nextInt(11)val ma…

GiraffeDet助力yolov8暴涨分---有可执行源码

Yolov8魔改–加入GiraffeDet模型提高小目标效果 VX搜索晓理紫关注并回复有yolov8-GiraffeDet获取代码 [晓理紫] 1 GiraffeDet模型 GiraffeDet是一种新颖的粗颈范例,一种类似长颈鹿的网络,用于高效的目标检测。 GiraffeDet 使用极其轻量的主干和非常深且…

助力网络管理的利器:企业办公网络中的VLAN划分策略

企业办公网络的性能和安全性对员工的高效工作和信息安全具有重要意义。在实现这一目标时,VLAN(Virtual Local Area Network)划分在网络设计中发挥着至关重要的作用。通过将办公网络划分为多个虚拟局域网,VLAN划分可以实现网络资源…

【论文精读】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 前言Abstract1. Introduction2. Related Work3. Method3.1. Overall Architecture3.2. Shifted Window based Self-AttentionSelf-attention in non-overlapped windowsShifted window partitioning …

streamlit-高级功能

缓存 st.cache_data st.cache_resource 为应用程序添加会话状态 会话状态 会话状态应用到应用程序 会话状态和小部件关联 可序列化会话状态 注意事项和限制 命令行选项 应用程序菜单 菜单选项 开发者选项 streamlit配置 按钮行为和示例 连接到数据 数据框 形式 小部件语义 …

pycharm 打开Terminal时报错activate.ps1,因为在此系统上禁止运行脚本,并因此无法进入虚拟环境

pycharm 打开Terminal时报错activate.ps1,因为在此系统上禁止运行脚本,并因此无法进入虚拟环境 如下图所示: 网上说可以set_restrictFalse什么的,虽然也可但可能会降低电脑安全性,可以将下面的终端改为cmd.exe即可

d3dx9_35.dll丢失怎么解决

今天,我将为大家介绍关于电脑d3dx9_35.dll丢失的4种详细修复方法。希望通过这次分享,能够帮助大家解决在日常工作和生活中遇到的一些问题。 首先,让我们来了解一下d3dx9_35.dll是什么? d3dx9_35.dll是一个非常重要的动态链接库文…

自测scRNA-Seq+scWGBS=3分三区文章?

写在前面 最近在捣鼓表观遗传学,处理了一批Bulk RNA-Seq和WGBS(Whole Genome Bisulfite Sequencing)的数据。熟悉我风格的粉丝都知道,我一般会读几篇文献再下手,遂于PubMed中检索了几篇文章,发现一个2022年发表的题为"WGBS …

十种高级的代码书写方式,提高代码质量和工作效率

1.集合遍历 不使用lambda&#xff1a; List<String> list Arrays.asList("kk", "oneone", "11"); for (String name : list) {System.out.println(name); }使用lambda&#xff1a; List<String> list Arrays.asList("kk&q…

如何使用工具将批量查询的物流信息导出到表格

现如今&#xff0c;物流行业发展迅速&#xff0c;人们对于物流信息的查询需求也越来越高。为了满足用户的需求&#xff0c;我们推荐一款便捷高效的物流信息查询工具——"固乔快递查询助手"软件。 首先&#xff0c;用户需要下载并安装"固乔快递查询助手"软件…

手写一个简单爬虫--手刃豆瓣top250排行榜

#拿到页面面源代码 request #通过re来提取想要的有效信息 re import requests import re url"https://movie.douban.com/top250"headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11…

《论文阅读21》Group Equivariant Convolutional Networks

一、论文 研究领域&#xff1a;机器学习论文&#xff1a;Group Equivariant Convolutional Networks PMLR Proceedings of Machine Learning Research 2016 论文链接 二、论文简述 三、论文详述 群等变卷积网络 Abstract 我们引入群等变卷积神经网络&#xff08;G-CNN&…

景联文科技数据标注:人体关键点标注用途及各点的位置定义

人体关键点标注是一种计算机视觉任务&#xff0c;指通过人工的方式&#xff0c;在指定位置标注上关键点&#xff0c;例如人脸特征点、人体骨骼连接点等&#xff0c;常用来训练面部识别模型以及统计模型。这些关键点可以表示图像的各个方面&#xff0c;例如角、边或特定特征。在…

《异常检测——从经典算法到深度学习》22 Kontrast: 通过自监督对比学习识别软件变更中的错误

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

【UE】Texture Coordinate 材质节点

目录 一、简介 二、属性介绍 &#xff08;1&#xff09;参数&#xff1a;U平铺 &#xff08;2&#xff09;参数&#xff1a;V平铺 &#xff08;3&#xff09;参数&#xff1a;解除镜像U &#xff08;4&#xff09;参数&#xff1a;解除镜像V 三、 节点构成原理 四、初级…

java企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff…

docker 本地镜像发布到私有库

1、下载镜像 Docker Registry docker pull registry 2、运行私有库Registry&#xff0c;相当于本地有个私有Docker hub 默认情况&#xff0c;仓库被创建在容器的/var/lib/registry目录下&#xff0c;建议自行用容器卷映射&#xff0c;方便于宿主机联调 docker run \ -d \ -p…

Linux 通过 Docker 部署 Nacos 2.2.3 服务发现与配置中心

目录 环境准备Nacos 数据库创建Docker 部署 Nacos1. 创建挂载目录2. 下载镜像3. 创建和启动容器4. 访问控制台 导入 Nacos 配置SpringBoot 整合 Nacospom 依赖application.yml 配置 参考官方链接微服务商城源码 环境准备 名称版本IP端口Nacos2.2.3192.168.10.218848、9848MySQ…

餐厅固定资产怎么管理?

餐厅固定资产的管理需要做到以下几点&#xff1a;  固定资产购置&#xff1a;餐厅的固定资产包括设备、家具、厨房用品等&#xff0c;购置时需要注意质量和价格&#xff0c;并进行登记。  固定资产登记&#xff1a;将餐厅的固定资产名称、型号、规格、数量、单价、金额、购…