Vue之前端批量下载文件并以压缩包形式存储
后端返回一个文件链接的数组,前端处理下载逻辑,并且将这些文件存储在压缩包内部,这用的jszip 和 file-saver 这两个库。
步骤说明
1.使用 npm 或 yarn 安装 jszip 和 file-saver。
npm install jszip file-saver
2.获取文件内容:
使用 fetch API 获取每个文件的内容。
3.生成压缩文件:
使用 jszip 将获取到的文件内容添加到压缩包中。
4.下载压缩文件:
使用 file-saver 将压缩包下载到客户端。
实例:
import JSZip from 'jszip';
import { saveAs } from 'file-saver';async function fetchAndCompressFiles(fileUrls) {const zip = new JSZip();// 并发请求文件内容const fileContents = await Promise.all(fileUrls.map(async (url) => {const response = await fetch(url);if (!response.ok) {throw new Error(`Failed to fetch ${url}: ${response.statusText}`);}return response.blob();}));// 添加文件到压缩包fileUrls.forEach((url, index) => {const fileName = url.substring(url.lastIndexOf('/') + 1);zip.file(fileName, fileContents[index], { binary: true });});// 生成压缩包 Blobconst blob = await zip.generateAsync({ type: 'blob' });// 下载压缩包saveAs(blob, 'compressed-files.zip');
}// 示例文件 URL 数组
const fileUrls = ['http://example.com/file1.txt','http://example.com/file2.txt','http://example.com/file3.txt'
];// 下载按钮的点击事件
document.getElementById('downloadButton').addEventListener('click', async () => {try {await fetchAndCompressFiles(fileUrls);} catch (error) {console.error('Error compressing and downloading files:', error);}
});
相关文章:
Vue之前端批量下载文件并以压缩包形式存储
后端返回一个文件链接的数组,前端处理下载逻辑,并且将这些文件存储在压缩包内部,这用的jszip 和 file-saver 这两个库。 步骤说明 1.使用 npm 或 yarn 安装 jszip 和 file-saver。 npm install jszip file-saver 2.获取文件内容:…...
【AI学习】LLaMA模型的微调成本有几何?
在前面文章《LLaMA 系列模型的进化(二)》中提到了Stanford Alpaca模型。 Stanford Alpaca 基于LLaMA (7B) 进行微调,通过使用 Self-Instruct 方法借助大语言模型进行自动化的指令生成,Stanford Alpaca 生成了 52K 条指令遵循样例数…...
【专题】2024全数驱动 致胜未来-数字化敏捷银行白皮书报告合集PDF分享(附原数据表)
原文链接: https://tecdat.cn/?p37404 政策明确发展使命,新时代商业银行应坚持党建引领,秉持高质量发展理念。数字经济已成大势,商业银行需构建数字基础设施能力,强化顶层战略规划。当前商业银行数字化发展面临诸多挑…...
280Hz显示器哪家强
280Hz显示器哪家强?今天就给大家带来6大品牌和型号的280Hz显示器一起对比对比! 1.280Hz显示器 - HKC G27H3显示器 HKC G27H3是一款高性价比的电竞显示器,以下是它的一些特点: - **高刷新率与快速响应**: - 拥有280H…...
ROUTE_STATUS
ROUTE_STATUS是一个只读属性,由Vivado路由器分配给网络 反映网络上路由的当前状态。 该属性可以由单个网络或一组网络使用 get_property或report_property命令。该物业由 report_route_status命令返回整个设计的route_status。 架构支持 所有架构。 适用对象 •网络…...
v4l2(video4linux2) yuyv(yuv422)、MJPEG、H.264
V4L2(Video4Linux2)是Linux内核中的视频设备接口框架,专门用于捕获和输出视频数据。V4L2广泛应用于各种视频设备的驱动程序开发,如网络摄像头、电视调谐器、视频采集卡、以及其他视频输入/输出设备。 ### V4L2的主要功能 1. **视…...
.Net插件开发开源框架
在.NET开发中,有许多开源框架可以用于插件开发,以下是一些最常见的框架: MEF(Managed Extensibility Framework) MEF是一个用于创建可插拔软件应用程序的库,它可以在不修改原始应用程序的情况下扩展应用程…...
基于Spark实现大数据量的Node2Vec
基于Spark实现大数据量的Node2Vec Node2Vec 是一种基于图的学习算法,用于生成图中节点的低维度、高质量的向量表示。这种算法基于 word2vec 模型,将自然语言处理中的词嵌入技术应用于图结构的节点,以捕捉节点之间的复杂关系。Node2Vec 特别强…...
[VMware]VMware-Esxi 6.7 厚置备转为精简置备
背景:创建了一个win10 60G的厚置备磁盘,现在想改为精简置备。 先关闭win10系统,并删除快照 1、开启shell 2、登录到虚拟存放的目录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [rootxxx:~] cd /vmfs/volumes/5fea055e-458157d3-c8f8-8cec4ba51c4…...
vue面试题十八
一、Vue 3中的样式绑定有哪些新特性? Vue 3中的样式绑定保持了与Vue 2相似的灵活性和强大功能,同时引入了一些新的特性和改进,主要集中在响应式系统和Composition API上。以下是Vue 3中样式绑定的主要新特性及其说明: 1. 响应式…...
windows C++-windows C++/CX简介(三)
^类型 (^) 是 C/CX 最突出的功能之一——当人们第一次看到 C/CX 代码时,很难不注意到它。那么,^ 类型到底是什么?这是类型是一种智能指针类型,它自动管理 Windows 运行时对象的生命周期,也 提供自动类型转换功能以简化…...
《黑神话.悟空》:一场跨越神话与现实的深度探索
《黑神话.悟空》:一场跨越神话与现实的深度探索 在国产游戏日益崛起的今天,《黑神话.悟空》以其独特的剧情、丰富的人物设定和深刻的主题,成为了无数玩家翘首以盼的国产3A大作。这款游戏不仅是一次对传统故事的创新演绎,更是一场对…...
【Kotlin设计模式】建造者模式在Android中的应用
前言 建造者模式(Builder Pattern)是一种创建型设计模式,一步一步地构建一个复杂对象的不同部分,而不是直接创建该对象的实例。建造者模式的核心思想是将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的…...
Kafka 性能为什么比 RocketMQ 好
Kafka 性能更好的原因 因为 kafka 零拷贝技术跟 RocketMQ 的不一样。 kafka 零拷贝技术使用的是 sendfileDMA scatter/gather 。只需要经过 2 次拷贝,2 次上下文切换RocketMQ 零拷贝使用的 mmap 内存映射,需要经过 3 次拷贝,4 次上下文切换…...
el-image的配套使用(表格,表单)
1. 配合table在一起使用,支持预览 此处使用场景是表格中只显示一张图片 preview-src-list只支持数组,故需要将单个字符串转换为转换为字符串数组 <el-table-column align"center" label"二维码"><template slot-scope&q…...
MKS MWH-5匹配器Automatc matching impedance Network手侧
MKS MWH-5匹配器Automatc matching impedance Network手侧...
打卡50天------图论
正式开启图论了,作为一个前端工程师,这个代码随想录真的刷新了我对于算法的认知,每天都在学习新东西。 别着急、放轻松、慢慢来。 一、图论理论基础 二、深搜理论基础 了解一下深搜的原理和过程,其实对于深搜和广搜我自己也写过…...
实现 FastCGI
CGI的由来: 最早的 Web 服务器只能简单地响应浏览器发来的 HTTP 请求,并将存储在服务器上的 HTML 文件返回给浏 览器,也就是静态 html 文件,但是后期随着网站功能增多网站开发也越来越复杂,以至于出现动态技 术&…...
0x01 GlassFish 任意文件读取漏洞复现
参考文章: 应用服务器glassfish任意文件读取漏洞 - SecPulse.COM | 安全脉搏 fofa 搜索使用该服务器的网站 网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统 "glassfish"&…...
RLOC_ORIGIN
RLOC_ORIGIN属性为相对放置的对象提供绝对位置或LOC RTL设计中的宏(RPM)。有关定义RPM和使用 RLOC_ORIGIN属性,请参阅《Vivado Design Suite用户指南:使用约束》 (UG903)[参考文献19]。 RPM是通过使用H_set…...
Qwen3-TTS作品分享:听AI朗读你的日记、诗歌和故事
Qwen3-TTS作品分享:听AI朗读你的日记、诗歌和故事 1. 为什么你需要一个会"读心"的语音合成工具 想象一下这样的场景:深夜写完日记,点击播放键,听到一个温暖的声音将你的文字娓娓道来;创作完一首诗…...
DeepSeek-R1-Distill-Qwen-7B优化升级:提升推理速度的技巧
DeepSeek-R1-Distill-Qwen-7B优化升级:提升推理速度的技巧 1. 模型概述 DeepSeek-R1-Distill-Qwen-7B是基于Qwen架构的7B参数蒸馏模型,由DeepSeek团队开发。该模型通过知识蒸馏技术从更大的DeepSeek-R1模型中提取关键知识,在保持较高推理能…...
AI应用架构师讲解AI在金融市场应用案例的模型构建
AI应用架构师讲解:AI在金融市场应用案例的模型构建 一、引入与连接:当AI成为金融市场的“智能分析师” 2023年,某头部量化基金的AI策略实现了35%的年化收益率,远超市场平均水平;同年,某国有银行用AI风险模型…...
CentOS 7.9 上部署 ELK 9.2.0 踩坑实录:从系统优化到证书配置的完整避坑指南
CentOS 7.9 上部署 ELK 9.2.0 实战指南:系统调优与安全配置全解析 在当今数据驱动的时代,企业日志管理已成为运维工作的核心环节。ELK Stack(Elasticsearch、Logstash、Kibana)作为开源日志分析解决方案的标杆,其9.2.0…...
STM32F767串口接收不定长数据实战:超时中断与空闲中断的配置与性能对比
1. STM32F767串口接收不定长数据的痛点与解决方案 在嵌入式开发中,处理串口不定长数据就像在餐厅等一份不知道有多少道菜的套餐——你永远不知道下一口是什么,也不知道什么时候结束。STM32F767作为高性能MCU,面对RS485、Modbus等协议时&#…...
SeqGPT-560M智能邮件分类系统实战
SeqGPT-560M智能邮件分类系统实战 1. 引言:邮件管理的痛点与解决方案 每天打开邮箱,看到堆积如山的未读邮件,是不是感觉头大?工作邮件、会议通知、促销信息、垃圾邮件全都混在一起,找重要邮件就像大海捞针。手动分类…...
万象视界灵坛效果展示:血条式置信度进度条与‘同步率’动态分布图实录
万象视界灵坛效果展示:血条式置信度进度条与同步率动态分布图实录 1. 平台概览 万象视界灵坛(Omni-Vision Sanctuary)是一款基于OpenAI CLIP技术的高级多模态智能感知平台。不同于传统视觉识别工具的单调界面,它将复杂的"语…...
Windows 11 离线部署 WSL2 与 Ubuntu:绕过商店限制的完整实战
1. 为什么需要离线部署 WSL2 与 Ubuntu 很多开发者在 Windows 11 上使用 WSL2 时都会遇到一个头疼的问题:微软商店经常无法正常访问或下载速度极慢。我自己就遇到过好几次,明明网络连接正常,但就是卡在下载环节,进度条一动不动。这…...
RS232 vs RS485 vs TTL:如何为你的嵌入式项目选择正确的电平标准?
RS232 vs RS485 vs TTL:嵌入式工程师的电平标准选型指南 在嵌入式系统开发中,选择合适的电平标准往往决定了整个通信系统的可靠性和成本效益。就像建筑师需要根据不同的地质条件选择合适的地基方案一样,工程师也需要根据传输距离、环境干扰和…...
超越SIFT?图像匹配实战对比:SIFT、ORB、SURF在无人机航拍图中的表现
无人机航拍图像特征匹配算法实战评测:SIFT、ORB、SURF横向对比 当无人机掠过城市上空,传回的航拍图像如何快速准确地完成拼接与匹配?特征提取算法的选择直接决定了三维重建的精度与效率。本文将基于真实无人机数据集,从工程实践角…...
