当前位置: 首页 > news >正文

vue 使用jszip,file-saver下载压缩包,自定义文件夹名,文件名打包下载为zip压缩包文件,全局封装公共方法使用。

记录一下后台管理全局封装一个压缩包下载方法,文件夹名自定义,文件名自定义,压缩包名自定义。

安装必要的库

npm install jszip
npm install file-saver

自定义一个公共方法全局注入

在这里插入图片描述
在这里插入图片描述

页面使用

在这里插入图片描述

        /** 下载按钮操作 */handleDownload() {const ids = this.ids;let selectFileList = this.dataList.filter(o => ids.includes(o.id));this.$MyUtil.jszipDown({arrFileObj: selectFileList, // 必传filePath: 'lineCodeImg', //文件下载路径字段 必传fileName: 'lineName,lineCode', //文件自定义名字 可以不穿})},

my-util.js

import JSZip from 'jszip'
import { saveAs } from 'file-saver'
import axios from 'axios'
import { getToken } from '@/utils/auth'
export default {/*** 在对象数组中找到一个属性值和参数相等的一条记录* @param {object} Obj 接受参数对象* arrFileObj 对象数组* filePath 文件下载路径字段* folderName 文件夹名字* fileName 文件自定义名字* jszipName 文件自定义名字* @returns */jszipDown(Obj) {//此方法后端返回文件流function getUrlFile(url) {return new Promise((resolve, reject) => {axios({method: 'post',headers: {'Authorization': 'Bearer ' + getToken(),'Content-Type': 'application/json; application/octet-stream'},responseType: 'blob',data: { url },url: process.env.VUE_APP_BASE_API + '/common/proxy/download'}).then(res => {resolve(res.data)}).catch(err => {reject(err.toString())})})};const zip = new JSZip()const promiseList = [];Obj.arrFileObj.forEach(file => {if (file) {let fName = ''if (Obj.fileName) {let format = file[Obj.filePath].split('.')format = format[format.length - 1]let nameL = Obj.fileName.split(',')let name = nameL.map(item=>file[item]).join('-')fName = name+'.'+format}else{fName = file[Obj.filePath].split('/')fName = fName[fName.length - 1]}const promise = getUrlFile(file[Obj.filePath]).then(data => {if (Obj.folderName) {zip.folder(file[Obj.folderName]).file(fName, data,{binary: true})} else {zip.file(fName, data,{binary: true})}});promiseList.push(promise);}});Promise.all(promiseList).then(res => {zip.generateAsync({ type: 'blob' }).then(data => saveAs(data, Obj.jszipName?Obj.jszipName:'文件压缩包.zip'))}).catch(err => {console.log(err);});}}
http://www.lryc.cn/news/439450.html

相关文章:

  • 计网八股文
  • [001-03-007].第07节:Redis中的事务
  • WLAN实验简述
  • Docker简介在Centos和Ubuntu环境下安装Docker
  • C:字符串函数(续)-学习笔记
  • Depth靶机详解
  • go get -u @latest没有更新依赖模块
  • 介绍一些免费 的 html 5模版网站 和配色 网站
  • 【C++】入门基础(下)
  • Spring Boot 集成 MongoDB - 入门指南
  • 基于云计算的虚拟电厂负荷预测
  • Android应用性能优化
  • fiddler抓包01:工具介绍
  • Spring Boot母婴商城:打造一站式购物体验
  • 【面试八股总结】GC垃圾回收机制
  • arcgisPro修改要素XY容差
  • Java 21的Enhanced Deprecation的笔记
  • Ubuntu下Git使用教程:从入门到实践
  • 【开放词汇检测】基于MMDetection的MM-Grounding-DINO实战
  • PLC-Recorder 对西门子传动的采集方法
  • 【网络通信基础与实践第三讲】传输层协议概述包括UDP协议和TCP协议
  • centos更改静态ip
  • YOLOv5/v8 + 双目相机测距
  • 双三次插值及MATLAB实现
  • Kubernetes 持续集成与交付(CI/CD)
  • 【Rust练习】14.流程控制
  • React-Hooks-Form 集成 Zod 校验库
  • kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件
  • 比传统机器学习更先进的深度学习神经网络的二分类建模全流程教程
  • TeamTalk梳理概括