返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue实现文件批量打包压缩下载
  • 675
分享到

Vue实现文件批量打包压缩下载

2024-04-02 19:04:59 675人浏览 安东尼
摘要

上次做了一个选择多个数据生成多个二维码并下载,当时项目催的紧,就简单写了个循环生成二维码下载,一次性会下载很多文件,特别难整理; 刚好这次项目又遇到类似这种功能,需要一次性批量下载多

上次做了一个选择多个数据生成多个二维码并下载,当时项目催的紧,就简单写了个循环生成二维码下载,一次性会下载很多文件,特别难整理;

刚好这次项目又遇到类似这种功能,需要一次性批量下载多个文件,那么就安排下打包下载吧!

需要用到的是file-saver、jszip两个插件

首先,我们安装这两个插件,在控制台中依次输入下方命令执行

npm install file-saver
npm install jszip

上方依赖安装完成,我们在需要实现打包下载的页面中引入这两个插件

import JSZip from "jszip";
import FileSaver from "file-saver";

在data中,我就简单定义一个数组 fileList ,用来存放要下载的文件链接

data() {
  return {
    fileList: [
      {
        name: 'loGo1',
        url: 'https://duanqinghua.com/logo.png'
      },
      {
        name: 'logo2',
        url: 'Http://sharedbk.com/logo.png'
      }
    ]
  }
}

接着就是在 methods 中写下载事件了

// 点击下载
download() {
  var blogTitle = `下载文件名字`; // 下载后压缩包的命名
  var zip = new JSZip();
  var promises = [];
  let cache = {};
  let arrImg = [];
  for (let i = 0; i < this.appData.resources.length; i++) {
    arrImg.push({
      path: this.appData.resources[i].url, // 文件链接
      name: this.appData.resources[i].name // 文件名称
    });
  }
  for (let item of arrImg) {
    // item.path为文件链接地址
    const promise = this.getImgArrayBuffer(item.path).then((data) => {
      // 下载文件, 并存成ArrayBuffer对象(blob)
      zip.file(item.name, data, { binary: true }); // 逐个添加文件
      cache[item.name] = data;
    });
    promises.push(promise);
  }
  Promise.all(promises).then(() => {
    zip.generateAsync({ type: "blob" }).then((content) => {
      // 生成二进制流
      FileSaver.saveAs(content, blogTitle); // 利用file-saver保存文件  自定义文件名
    });
  }).catch((res) => {
    alert("文件压缩失败");
  });
},
//文件以流的形式获取(参数url为文件链接地址)
getImgArrayBuffer(url) {
  return new Promise((resolve, reject) => {
    //通过请求获取文件blob格式
    let xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", url, true);
    xmlhttp.responseType = "blob";
    xmlhttp.onload = function () {
      if (this.status == 200) {
        resolve(this.response);
      } else {
        reject(this.status);
      }
    };
    xmlhttp.send();
  });
}

很多小伙伴复制完代码使用,点击下载后浏览器会报跨域问题,这个问题并非前端问题,需要后端在存储文件的服务器中设置允许跨域,添加 Access-Control-Allow-Origin 即可!

到此这篇关于Vue实现文件批量打包压缩下载的文章就介绍到这了,更多相关Vue文件打包压缩下载内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue实现文件批量打包压缩下载

本文链接: https://lsjlt.com/news/164320.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue实现文件批量打包压缩下载
    上次做了一个选择多个数据生成多个二维码并下载,当时项目催的紧,就简单写了个循环生成二维码下载,一次性会下载很多文件,特别难整理; 刚好这次项目又遇到类似这种功能,需要一次性批量下载多...
    99+
    2024-04-02
  • Vue怎么实现文件批量打包压缩下载
    在Vue中实现文件的批量打包压缩下载可以通过以下步骤来实现: 首先,创建一个按钮或者其他触发下载的元素,当用户点击这个按钮时触发...
    99+
    2024-03-08
    vue
  • js实现根据文件url批量压缩下载成zip包
    目录前言1. 所需包2. 安装3. 引入4. 完整代码解析使用5. 部分代码解析解析 Bolb 与 arraybuffer前言 项目开发中,产品经理提了这样一个需求:将系统中的附件实...
    99+
    2023-02-09
    js url批量压缩zip包 js url批量压缩
  • php如何实现批量压缩下载
    本文操作环境:windows10系统、php 7、thinkpad t480电脑。在php中我们可以借助于ZipArchive类来实现将文件批量压缩打包下载。注意:使用该类之前,linux需开启zlib,windows需取消php_zip....
    99+
    2017-02-22
    php 批量
  • java实现文件打包压缩输出到浏览器下载
    文件打包压缩输出到浏览器下载 java批量下载文件打包压缩工具类,输出到浏览器下载,可以自己改名。 一、工具类: 入参 :文件LIst ;打包后的名字 ;响应到浏览器 ...
    99+
    2024-04-02
  • java 批量下载文件 打包成zip包
    创建DownLoadUrlStream承载数据 import lombok.Data;import java.io.InputStream;@Datapublic class DownLoadUrlS...
    99+
    2023-08-31
    java servlet 开发语言
  • 通俗易懂【Springboot】 单文件下载和批量下载(多个文件合成一个压缩包下载)
    文章目录 一.单文件下载1.简单理解文件下载2.单文件下载的具体代码实现3.测试4.单文件下载整体代码 二.多文件批量下载(多个文件合成一个压缩包下载)1.多文件下载的实现方式,这里使用了ZipOutputStream2....
    99+
    2023-08-17
    spring boot java 后端
  • [python]批量解压文件夹下所有压缩包(rar、zip、7z)
            在文件夹作用包含许多压缩包的时候,解压起来就很费时费力,尤其是在文件夹还存在嵌套的情况下,解压起来就更麻烦了。Franpper今天给大家带来递归遍历指定路径下的所有文件和文件夹,批量解压所有压缩包的方法,帮大家一键解压。  ...
    99+
    2023-09-06
    python
  • vue如何从后台下载.zip压缩包文件
    目录1.添加下载按钮2.(原始方法,会出现乱码)给按钮添加点击事件3.(更正版)用axios({})这种方式4.报跨域问题vue前后端分离,使用element的el-button组件...
    99+
    2024-04-02
  • C#如何实现多文件打包压缩
    C#如何实现多文件打包压缩,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。最近项目需要实现多文件打包的功能,尝试了一些方法,最后发现使用ICSharpCode.S...
    99+
    2023-06-22
  • C#实现多文件打包压缩(.Net Core)
    最近项目需要实现多文件打包的功能,尝试了一些方法,最后发现使用ICSharpCode.SharpZipLib 最符合项目的要求。 具体实现如下: 1.在 Nuget 中安装ICSha...
    99+
    2024-04-02
  • java 批量下载将多个文件(minio中存储)压缩成一个zip包
    我的需求是将minio中存储的文件按照查询条件查询出来统一压成一个zip包然后下载下来。 思路:针对这个需求,其实可以有多个思路,不过也大同小异,一般都是后端返回流文件前端再处理下载,也有少数是压缩成zip包之后直接给下载链接返回到前端,前...
    99+
    2023-10-28
    java vue.js javascript spring boot
  • Python实现批量压缩文件/文件夹zipfile的使用
    目录【Python压缩文件夹】导入“zipfile”模块【python压缩文件】导入“zipfile”模块补充zipfile是python里用来做zip格式编码的压缩和解压缩的,由于...
    99+
    2024-04-02
  • .NetCore多文件打包压缩的实现代码
    最近项目需要实现多文件打包的功能,尝试了一些方法,最后发现使用  ICSharpCode.SharpZipLib 最符合项目的要求。 具体实现如下: 1.在 Nuget 中安装  I...
    99+
    2024-04-02
  • Java实现多文件压缩打包的方法
    本文实例讲述了Java实现多文件压缩打包的方法。分享给大家供大家参考,具体如下:package com.biao.test;import java.io.File;import java.io.FileInputStream;import ...
    99+
    2023-05-31
    java 文件 压缩
  • vue-cli3中如何打包成zip压缩文件
    目录vue-cli3打包成zip压缩文件如何实现?思考vue-cli3打包优化vue-cli3打包成zip压缩文件 目前在我司,采用前后分离的方式开发,这就会面临一个问题。那就是部署...
    99+
    2022-11-13
    vue-cli3打包 zip压缩文件 vue-cli3打包成zip
  • Java实现文件压缩为zip和解压zip压缩包
    目录压缩成.zip解压.zip压缩成.zip 代码如下: public static void toZip(String srcDir, OutputStream out) th...
    99+
    2024-04-02
  • Linux系统下文件的压缩、打包与解压方法
    这篇文章主要介绍“Linux系统下文件的压缩、打包与解压方法”,在日常操作中,相信很多人在Linux系统下文件的压缩、打包与解压方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统下文件的压缩、打...
    99+
    2023-06-10
  • python实现图片批量压缩
    目录第一种 一:安装包二:导入包三:获取图片文件的大小四:输出文件夹下的文件五:压缩文件到指定大小,我期望的是150KB,step和quality可以修改到最合适的数值六:...
    99+
    2024-04-02
  • Python怎么批量解压和压缩文件夹
    这篇文章主要介绍“Python怎么批量解压和压缩文件夹”,在日常操作中,相信很多人在Python怎么批量解压和压缩文件夹问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么批量解压和压缩文件夹”的疑...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作