首页 > 其他分享 >【Vue】基于vue3封装批量下载功能

【Vue】基于vue3封装批量下载功能

时间:2024-07-23 19:29:12浏览次数:8  
标签:Vue const zip fileList fileName axios file vue3 封装

一、安装依赖

npm install jszip
npm install file-saver

 

二、代码实现

import axios from 'axios'
import JSZip from 'jszip'
import FileSaver from 'file-saver';


/**
 * 批量下载
 * @param {Object} fileList
 */
export function downloadFileList(fileList, fileName) {
  // 初始化
  const zip = new JSZip();
  const promises = fileList.map((fileUrl, index) => {
    return new Promise((resolve, reject) => {
      axios({
        method: 'get',
        url: fileUrl,
        responseType: 'arraybuffer',
      })
      .then(res => {
        // 下载文件, 并存成ArrayBuffer对象
        const cleanUrl  = fileUrl.split('?')[0];
        const idx       = cleanUrl.lastIndexOf("/");
        const fileName  = cleanUrl.substring(idx+1);
        
        // 逐个添加文件
        zip.file(fileName, res.data, { binary: true });
        
        resolve();
      })
      .catch(err => {
        reject('加载失败:' + err)
      })
    })
  })
  
  return Promise.all(promises)
    .then(res => {
      zip.generateAsync({ type: 'blob' }).then(content => {
        FileSaver.saveAs(content, fileName + '_' + new Date().getTime() + '.zip') 
      })
    })
}

 

 

 

参考文献:https://blog.csdn.net/weixin_49053419/article/details/135291594

 

标签:Vue,const,zip,fileList,fileName,axios,file,vue3,封装
From: https://www.cnblogs.com/lanse1993/p/18319392

相关文章

  • Vue 在大型项目中的架构设计和最佳实践
    前面分享了很多八股和算法,现在开始慢慢进入项目搭建随着项目规模的扩大,合理的架构设计和最佳实践变得尤为重要。一个良好的架构能够提高开发效率、维护性和可扩展性。本文将探讨在大型Vue项目中,如何进行架构设计并遵循最佳实践。一、项目结构一个清晰的项目结构有助于代码的......
  • VUE系列---深度解析 Vue 优化策略
    在前端开发中,性能优化一直是一个重要的课题。Vue.js提供了多种优化策略,帮助开发者构建高性能的应用。本文将深入解析以下几个优化策略:使用v-once、v-if和v-show的区别和优化通过异步组件提升性能一、v-once、v-if和v-show的区别和优化1.v-oncev-once指令用于一次......
  • 记一次Vue.nextTick失效的解决经历
    问题背景在一个老页面上渲染echarts,在vue的mounted里面使用this.$nextTick,无法获取到ref。也就是获取不到dom。解决思路一开始怀疑vue的版本不对,但是后来vue升级到vue2.6.14,还是不行。控制台也没有任何报错,页面能正常渲染。这个时候我开始想,是不是使用的vuejs文件是生产版......
  • 从零开始学Java(超详细韩顺平老师笔记梳理)08——面向对象编程中级(上)IDEA常用快捷键、包
    文章目录前言一、IDEA使用常用快捷键模板/自定义模板二、包package1.基本介绍2.包的命名规范3.常用的包和如何引入4.注意事项和细节三、访问修饰符(四类)四、封装Encapsulation(重点)1.封装介绍2.封装步骤3.快速入门4.封装与构造器五、继承(重点)1.为什么需要继承2......
  • java毕业设计-基于微信小程序的蛋糕订购商城系统设计与实现,基于springboot+vue+微信小
    文章目录前言演示视频项目背景项目架构和内容获取(文末获取)具体实现截图用户微信小程序端管理后台技术栈具体功能模块设计系统需求分析可行性分析系统测试为什么我?关于我我自己的网站项目相关文件前言博主介绍:✌️码农一枚,专注于大学生项目实战开发、讲解和毕业......
  • 【java计算机毕设】在线教学平台MySQL springboot vue HTML maven小组设计项目源代码+
    目录1项目功能2项目介绍3项目地址1项目功能【java计算机毕设】在线教学平台MySQLspringbootvueHTMLmaven小组设计项目源代码+文档寒暑假作业 2项目介绍系统功能:在线教学平台包括管理员、用户、教师三种角色。管理员功能包括个人中心模块用于修改个人信息......
  • Three.js针对.gltf类型建模文件封装记录
    记录Three.js代码组件封装片段,支持定制旋转位置大小配置three.js官方连接:Three.js中文网3D模型文件下载地址:3D模型可视化编辑器完整效果图片封装文件位置:utils文件夹下 依赖安装:"dependencies":{"three":"^0.165.0","three-obj-mtl-loader":"^1.......
  • VXE-Table+antvX6+element+DataV+vue2边框开发流程识别配置
    本demo为了实现自定义流程保存回显新增效果,复制即用,模拟数据太长没在代码中体现,需要可以找我拿vxe-table官方连接:VxeTablev4antVX6连接:https://x6.antv.antgroup.com/element连接:Element-Theworld'smostpopularVueUIframeworkDataV连接:DataV效果图H......
  • vuejs设计与实现1-3
    Vue1.权衡的艺术2.框架设计的核心要素3.vue.js3设计思路1.权衡的艺术框架设计:在保持可维护性的同时让性能损失最小化;命令式VS声明式从范式上来看,视图层框架分为命令式和声明式。命令式框架:关注过程,性能优;声明式框架:关注结果,可维护性好框架设计需要考虑可......
  • socket封装使用(uniapp)
    1、封装socketjsimportstorefrom'@/store'classsocketIO{constructor(){this.socketTask=nullthis.is_open_socket=false//避免重复连接this.is_show_Loading=false//为空就为1adminthis.url=store.state......