vue使用jszip和file-save下载文件并打包;vue前端下载多个文件b并打包;

在这里插入图片描述

场景: 一般是后端直接将多个文件打包好,前端调用下载地址下载打包;但是文件太多会导致下载接口时间过长和服务器爆掉;故采用前端先将多个文件下载然后进行打包;
注意点: 1.先获取所有下载的文件路径和包含后缀名的文件名 2.文件名称尽量不要太长,太长好像会出现压缩包.zip里的文件不是平铺开的,而是放在一个个文件夹内的。所以名称别太长。

一:引入插件 分别是axios获取文件blob,jszip打包文件,file-saver将文件保存到本地
在这里插入图片描述

//下载依赖
// npm i axios, JSZip, FileSaver -s
import axios from "axios";
import JSZip from "jszip";
import FileSaver from "file-saver";

二:一般会先调一个接口获取共有哪些文件需要下载,包括名称和下载地址

<el-button type="primary" @click="downFileZip(fileDownArr)">打包下载</el-button>
// data中的下载变量,待下载的多个文件地址和名称。
fileDownArr: [{ fileDownName: '非车驾驶证.jpeg', fileDownUrl: G_CGI_PHP.group.documentDownload + `?id=` + 'docde9edfb625464726bb51d68d5dbb05e6' },{ fileDownName: '非车-桂BZ8268_柳州市顺畅运输有限公司电子保单tpply45953 2.pdf', fileDownUrl: G_CGI_PHP.group.documentDownload + `?id=` + 'docbeeeb5b108f7494ab329205983d161f5' },{ fileDownName: '非车-桂BZ8268_柳州市顺畅运输有限公司电子保单tpply45953.pdf', fileDownUrl: G_CGI_PHP.group.documentDownload + `?id=` + 'docd009da9404e847b2a565948d6bbea8f2' },{ fileDownName: '非车营业执照.jpeg', fileDownUrl: G_CGI_PHP.group.documentDownload + `?id=` + 'docb02b92a491324badb8f5450f3b2bb32a' },]
    getFile (url) {return new Promise((resolve, reject) => {axios({method: "get",url, // 原先后端下载单个文件的路径// responseType: "ArrayBuffer"  // 注意看下你自己的原先后端下载地址返回的文件格式 是blob 还是其他的啥 对应这里就要改成后端返回的下载格式responseType: "blob"}).then(res => {resolve(res.data) // 返回文件的blob   Blob {size: 151382, type: 'image/png'}}).catch(error => {reject(error.toString())})})},downFileZip (arr) {// 这个是下载的文件的数组  一般会先调用一个后端接口,得到所有需要下载的文件的路径和对应名称(包含后缀名)const arr = [{fileDownUrl:'地址', fileDownName:'文件名'}] // 需要下载打包的路径, 可以是本地相对路径, 也可以是跨域的全路径const zip = new JSZip()const cache = {}const promises = []arr.forEach((item, i) => {const promise = this.getFile(item.fileDownUrl).then(data => {// 下载文件, 并存成blob对象const file_name = i + 1 + item.fileDownName // 获取文件名,一定要包含文件的后缀名(因为重复的文件名只会下载一个,故需要加入下标 不同名)zip.file(file_name, data, { binary: true }) // 逐个添加文件cache[file_name] = data})promises.push(promise)})Promise.all(promises).then(() => {zip.generateAsync({ type: "blob" }).then(content => {// 生成二进制流   然后保存文件(如果这个下载不了 也可以将下方这一行换成a标签下载逻辑)FileSaver.saveAs(content, "打包自定义附件名.zip") // 利用file-saver保存文件  自定义文件名})})},

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

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

相关文章

【BZOJ1085】骑士精神

迭代加深搜索。 剪枝&#xff1a;当满足以下任意一个条件退出&#xff1a; 1.当前已搜到答案时&#xff08;ans!-1||sum0&#xff09; 2.剩余步数1<当前局面与目标局面不同的格子数sum 时&#xff08;因为n步最多改变n1个格子&#xff09; 3.当前步数>当前规定最大步数时…

CH340电路设计注意事项

在前面两篇博客提到了CH340的电路设计以及芯片选型&#xff0c;本文将重点放在使用CH340芯片进行电路设计的一些细节与注意事项。 电压匹配问题 CH340 芯片通过 USB 转换出来的 TTL 串口输出和输入电压是根据芯片供电电压是自适应的。也即&#xff0c;如果芯片是 5V 供电&…

解决 Visual Studio 中代码注释自动折叠的问题

今天突发奇想&#xff0c;打算把存储过程以注释的形式放在代码中进行版本管理&#xff0c;比如下面的代码&#xff1a; 由于存储过程很长&#xff0c;注释占了很多行&#xff0c;严复影响了正常代码的排版与阅读体验。之前也遇到过这样的场景&#xff0c;当时通过手动添加regio…

Newtonsoft.Json高级用法

From: http://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快&#xff0c;体验好。刚好手头上的一个项目服务端接口有性能问题&#xff0c;需要进行优化。在接口多次修改中&#xff0c;实体添加了很多字段用于中间计算或者存储&#xff0c;然后最终用Newtonso…

CH340驱动(含各平台)

CH340转串口芯片支持的平台驱动齐全&#xff0c;支持 Windows/Linux/Android/MacOS/WinCE 等各主流系统。下面就给出各平台下驱动官网链接和简要说明&#xff0c;每个平台的安装与使用问题可以参见我的其他博文。 Windows驱动 下载链接&#xff1a;CH340/CH341 Windows 驱动链…

js获取文件名后缀

this.fileType this.file.name.split(.)[this.file.name.split(.).length - 1]

PHP笔记-管道的作用 类

echo 123 | sudo -S /bin/bash -c cp god* /usr/local/bin | 就是管道 作用是将前面的结果作为后面的参数使用 123就是sudo的密码 -c &#xff08;command命令&#xff09; cp god* /usr/local/bin将以god开头的文件拷贝到/usr/local/bin文件中 god* 以god开头的文件 /bin/b…

Android 经典示例,初学者的绝好源码资料

2019独角兽企业重金招聘Python工程师标准>>> Android 经典示例&#xff0c;初学者的绝好源码资料 附上源码&#xff1a; 转载:http://www.adobex.com/android/source/details/00000374.htm 转载于:https://my.oschina.net/androidcode/blog/104696

USB转串口驱动(支持各平台)

CH340转串口芯片支持的平台驱动齐全&#xff0c;支持 Windows/Linux/Android/MacOS/WinCE 等各主流系统。下面就给出各平台下驱动官网链接和简要说明&#xff0c;每个平台的安装与使用问题可以参见我的其他博文。 Windows驱动 下载链接&#xff1a;CH340/CH341 Windows 驱动链…

【DOS】对指定目录下的指定文件类型进行打包

echo offset packagepack.rar set dirsLoginServer Launcher GlobalLauncher GameLauncherdel %package%REM 对指定目录下的指定文件类型进行打包 for %%i in (%dirs%) do rar a %package% %%i\*.dll %%i\*.pdb %%i\*.exe.* %%i\*.xml说明&#xff1a; 1. 以上不会去子目录下搜…

CH340 Linux驱动使用教程

在官方Linux内核版本中自Kernel2.6以后就默认包含了对CH340/CH341芯片的驱动支持了&#xff0c;但比较遗憾的是该自带驱动版本较老&#xff08;由开源社区开发者提交&#xff09;已不能满足使用需求了&#xff0c;因此我们需要用芯片官网提供的新驱动进行替换链接。 1. 首先去…

关于页面图表相应式的问题,问题遇见时间,9月1日,到今天9月2日,尚未解决...

首先&#xff0c;我在做公司的新的软件页面&#xff0c;后台页面&#xff0c;遇到的问题是当我引入百度的echarts.js&#xff0c;想使用他们的插件来实现图表的功能&#xff0c;发现JS的信息描述必须放在他们div id的下面&#xff0c;否则会失效&#xff0c;这是问题一。 现在遇…

h5开发实时预览;真机调试开发;拼接ip的地址直接微信打开或者浏览器打开也可以实时预览

http://192.168.10.135:2277/#/Write1 本地启动vue项目 将地址栏复制 放在微信开发者工具 可以借助微信开发者工具预览 找到自己电脑的ip 也可以电脑输入自己的ip和对应端口号地址进行预览 最后将拼接ip和端口号的地址直接微信打开或者浏览器打开也可以实时预览

Android广播接实现电话的监听(电话的状态,拦截)

Android广播接实现电话的监听 1&#xff1a;需要在AndroidManifest.xml清单中添加权限 <uses-permission android:name"android.permission.PROCESS_OUTGOING_CALLS"/> <uses-permission android:name"android.permission.READ_PHONE_STATE" /…

CH340 MAC驱动使用教程

CH340 支持各类系统平台下使用&#xff0c;驱动的使用以及下载介绍可以参见我的其他博客&#xff1a;CH340 驱动&#xff08;含各平台&#xff09; 这一篇文章主要介绍CH340 在 MAC 以及各类 Arduino 平台的安装使用流程&#xff0c;首先到沁恒官网下载最新的CH340驱动&#x…

python基础2

本节内容 列表、元组操作字符串操作字典操作集合操作文件操作字符编码与转码 一、列表、元组操作 列表是我们最以后最常用的数据类型之一&#xff0c;通过列表可以对数据实现最方便的存储、修改等操作 定义列表 >>> name [hongpeng,21,ops] 通过下标访问列表中的元素…

element-ui嵌套弹框遮罩层解决

:modal-append-to-body“false” :append-to-body“true” 嵌套的 Dialog 必须指定该属性并赋值为 true <template><el-button type"text" click"outerVisible true">点击打开外层 Dialog</el-button><el-dialog title"外层 D…

Linux 串口调试工具汇总

在 linux 系统下进行串口调试或者开发时配合简单易用的串口调试工具那是必不可少。这篇博客对当前用的较多的&#xff0c;且我自己经常用的一些串口工具做一下汇总&#xff0c;大家可以参考一下。 实验环境&#xff1a; OS: Ubuntu16.04 Kernel: 4.4.0 --------------------…

Find和FirstOrDefault()有什么区别?

From: http://www.cnblogs.com/Benjamin/p/3261538.html Find方法和FirstOrDefault方法效果相同&#xff0c;都是返回满足条件的第一个元素&#xff0c;如果没有该元素&#xff0c;则返回null。 那么这两个扩展方法有什么不同&#xff1f; 1&#xff09;Find方法是.netFramewor…

python3.5中import sqlite3报错:ImportError: No module named _sqlite3

原因&#xff1a;缺少相关库 解决方案&#xff1a; 1 安装相关库 yum install sqlite-devel 2 重新编译安装Python转载于:https://www.cnblogs.com/MnCu8261/p/5836028.html