首页 > 其他分享 >多个文件通过压缩包下载

多个文件通过压缩包下载

时间:2024-12-19 13:53:25浏览次数:4  
标签:文件 axios const item params 压缩包 data 下载

import axios from "axios";
import { saveAs } from "file-saver";
import JSZip from "jszip";

async handleDownload(row) {
      let params = {
        id: row.id,
      };
      let fileInfos = await this.getFileInfos(params);
      if (fileInfos .length > 0) {
        const zip = new JSZip();
        const cache = {};
        const promises = [];
        fileInfos .forEach((item) => {
          if (item.url) {
            const promise = this.download(item.url).then((data) => {
              // 下载文件, 并存成ArrayBuffer对象
              zip.file(item.packageName, data, { binary: true }); // 逐个添加文件
              cache[item.packageName] = data; //可要可不要 用来打印查检查添加了那些文件
            });
            promises.push(promise); //加到promises队列里
          } else {
            this.$Notice.warning({
              title: `附件${item.packageName}地址错误,下载失败`,
            });
          }
        });
        Promise.all(promises)
          .then(() => {
            //异步队列全部完成时 执行下面代码
            zip.generateAsync({ type: "blob" }).then((content) => {
              // 生成二进制流s
              saveAs(content, "打包下载.zip"); // 利用file-saver保存文件
            });
          })
          .catch((res) => {
            this.$Notice.warning({
              title: "文件压缩失败",
            });
          });
      }
    },
    download(href) {
      return new Promise((resolve, reject) => {
        axios({
          method: "get",
          url: href,
          responseType: "arraybuffer",
        })
          .then((data) => {
            resolve(data.data);
          })
          .catch((error) => {
            reject(error.toString());
          });
      });
    },
    // 获取文件列表
    getFileInfos(params) {
      return new Promise((resolve) => {
        axios.get("xxxxxxxx", { params: params })
          .then((res) => {
            const result = res.data;
            if (result.code === "000000") {
              const data = result.data.fileInfos;
              resolve(data);
            }
          });
      });
    },

 

标签:文件,axios,const,item,params,压缩包,data,下载
From: https://www.cnblogs.com/ysx215/p/18617112

相关文章

  • 教你成为学霸第二期——了解C / C++ / Python / Java头文件
      给我一点时间,我可以将你从小白变成资深学霸目录一、C++头文件(一)(二)(三)二、C头文件(一)(二)三、Python模块(类似头文件概念的部分体现)(一)math模块(二)os模块(三)random模块四、Java包(相关但和传统头文件有区别)和导入语句一、C++头文件在C++编程的世界里,头......
  • JavaWeb笔记(项目案例-部门员工管理、文件上传)
    项目环境搭建资料接口文档在Day10三层架构controller:负责接受请求,处理响应service:逻辑处理,为了增强程序灵活性,方便层与层之间解耦,我们会采用面向接口的方式,还需要准备业务层的接口,mapper本身就是一个接口mapper:数据访问操作环境搭建部门实......
  • 实验6 模板类、文件I/O和异常处理
    实验任务4:Vector.hpp源码:1#pragmaonce2#include<iostream>3#include<stdexcept>4usingnamespacestd;56template<typenameT>7classVector{8public:9Vector(intn):size(n)10{11if(n<0)12......
  • C文件概述
    C文件概述   所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际上在前面的各章中我们已经多次使用了文件,例如源程序文件、目标文件、可执行文件、库文件(头文件)等。   文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中......
  • 电脑开机或打开程序提示缺少mmres.dll文件问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 电脑开机或打开程序提示缺少MSCDRUN.DLL文件问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 电脑开机或打开程序提示缺少MSCOMCTL.OCX文件问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 电脑开机或打开程序提示缺少mscomct2.ocx文件问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • Stable Diffusion 常用模型下载与说明(保姆级)
    Listitem相比于Midjourney,StableDiffusion最大的优势就是开源。相比于Midjourney靠开发人员开发的少数模型,SD则每时每刻都有人在世界各地训练自己的模型并免费公开共享给全世界的使用者。(当然你可以通过训练自己的专有模型而专门用于某一用途,这也将成为你作为AI绘画者的......
  • 【数值特性库】入口文件
    入口文件lib.rs://!为泛型准备的数字特征库#![doc(html_root_url="https://docs.rs/num-traits/0.2")]#![deny(unconditional_recursion)]#![no_std]//需要显式地将crate引入固有的float方法。Needtoexplicitlybringthecrateinforinherentfloatmethods......