zipJS 前端压缩使用

article/2025/10/4 8:38:59

前端在处理文件时,对于大文件或者多个文件上传、下载、编辑,直接使用原文件不方便,最近使用一个可以前端中处理 zip 文件的库,JSzip,主要功能:前端中压缩、解压缩、编辑zip文件。
在这里插入图片描述

在 nodeJS 中,可以使用 JSZip 压缩本地文件。

这个库的官网:https://stuk.github.io/jszip/

安装

浏览器环境

代码下载链接 http://github.com/Stuk/jszip/zipball/master 下载后直接插入到HTML的 script标签中

NPM 环境

使用 npm 安装依赖(如果没有npm,请先安装 nodeJS)

npm install jszip --save
// 使用 require 引入 jszip
var JSZip = require("jszip");// 引入另一个 file-saver 库,用来把压缩好的文件保存到本地
var saveAs = require('file-saver');// 新建一个zip压缩对象实例
var zip = new JSZip();// 压缩一个文件(文件内容可以上传,使用fs模块,或者直接使用字符串)
zip.file("Hello.txt", "Hello World\n");// 压缩一个文件夹,内部包含一个图片(可以压缩多个文件和文件夹)
zip.folder("images").file("smile.gif", imgData, {base64: true});// 异步生成压缩文件
zip.generateAsync({type:"blob"}).then(function(content) {// 保存到本地saveAs(content, "example.zip");
});

这样就可以将浏览器中的文本(文件)保存成 example.zip 格式存储到本地了。

下面是全部的代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><p>Works on firefox, chrome , opera &gt;= 15 and IE &gt;= 10 (but NOT in compatibility view).</p><button id="zip" class="btn btn-primary">click to zip</button><button id="unzip" class="btn btn-primary">click to unzip</button><div id="result_block" class="hidden"><h3>Content :</h3><div id="result"></div><div id="fileContent"></div></div></body><script src="./jquery.js"></script><script src="./jszip.js" ></script><script src="./FileSaver.js"></script><!-- 导入这个插件,可以不用使用下面的 download 函数 --><script type="text/javascript">// 创建一个zip 对象,将文件名和内容读到文件中var zip = new JSZip();zip.file("readme.md", "#### hello\nMichael 测试文件"); // 直接把一个文件放在根目录下面zip.folder("media").file("image1.jpg", "#### hello\nMichael 测试文件").file("image2.png", "#### hello\nMichael 测试文件"); // 在根目录下放一个文件夹 media,内部包含两个模拟图片文件zip.folder("template").file("index.html", "<html><h3>Hello</h3></html>"); // 在根目录下放一个文件夹 template 内部是一个HTML文件。window.result = '';// 将文本压缩zip 并下载$("#zip").on("click", function () {// type: "string"zip.generateAsync({type:"blob"}).then(function (blob) {// 1) generate the zip file// console.log(blob);window.result = blob; // 绑定到全局组件上,使用另一个按钮下载// // 2) trigger the downloadsaveAs(blob, "hello.zip");}, function (err) {$("#blob").text(err);});});// 将 zip 文件解压缩成内容读取。$("#unzip").on("click", function () {JSZip.loadAsync(window.result)// 1) read the Blob.then(function(zip) {console.log(zip);zip.forEach(function (relativePath, zipEntry) {// 2) print entries$("#fileContent").append($("<li>", {text : zipEntry.name}));});}, function (e) {$('#result').append($("<div>", {"class" : "alert alert-danger",text : "Error reading " + window.result.name + ": " + e.message}));});});// 模拟点击,下载文件// fake_click(save_link);function fake_click(obj) {var ev = document.createEvent("MouseEvents");ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);obj.dispatchEvent(ev);}// 下载文件// download("save.txt","hello world");function download(name, data) {var urlObject = window.URL || window.webkitURL || window;var downloadData = new Blob([data]);var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")save_link.href = urlObject.createObjectURL(downloadData);save_link.download = name;fake_click(save_link);}</script>
</html>

注:浏览器环境下,需要设置合适的第三方库 JS 路径,根据本地实际路径设置。

<script src="./jquery.js"></script>
<script src="./jszip.js" ></script>
<script src="./FileSaver.js"></script>

存在的问题:

实际使用中,如果压缩文件很大(例如2G)可能出现缓存区错误(感谢 July 冲鸭的反馈),反馈信息,目前官方没有给出明确的解决方案(官方问题),可以使用 zipjs 压缩普通大小的文件(几十MB没问题)。

截止 2022-08 在 32位操作系统中,压缩超过 2G 的文件,官方还没有给出明确的处理方法(我退岑,官方可能考虑性能问题,以及压缩比例,2G 文件在服务器或者 node 环境下,压缩消耗性能,其他的 tar gz 7z 等压缩算法,压缩后文件更小,也可以考虑其他替代方案)。

如果必须使用 zipJS 压缩大文件,其他大神提交了 PR (https://github.com/Stuk/jszip/pull/791)可以考虑 fork 代码然后改动这个 PR 进行尝试。


http://chatgpt.dhexx.cn/article/YFLCjQWK.shtml

相关文章

一篇文章介绍JSZip预览压缩包中的文件

安装依赖 npm i jszip 前提准备 准备好一个压缩包&#xff0c;格式为zip&#xff0c;存放两张png图片。 代码实现 <template><h1>JSZip,预览压缩包中的文件</h1><img v-for"(n,m) in picArr.arr":src"n":style"{width:200px}&qu…

VUE+jszip实现下载多个文件导出为一个zip格式

项目需求&#xff1a;将多个文件/图片导出为一个zip格式压缩包&#xff0c;点击<下载全部附件>按钮下载上面三个文件 1、安装jszip和file-saver插件 npm install jszip npm install file-saver2、在所需页面引入 import JSZip from "jszip";import FileSaver …

前端js使用jszip实现文件压缩功能

一、jszip下载 1、github下载地址&#xff1a;https://github.com/Stuk/jszip 2、下载成功后解压&#xff0c;js插件在dist目录里 二、引入jszip插件 <script type"text/javascript" src"./jszip.min.js"></script> 三、使用jszip对文件进…

JSZip 的简单介绍

1、前言 前端处理一些批量文件或者图片时候&#xff0c;通过使用异步上传&#xff0c;减少表单一次性提交的的数据量。但是图片或者文件有删除的时候&#xff0c;服务器上真实的图片不容易删除。找了一些资料发些了JSZip这个技术&#xff0c;可以将文件或者图片打包成一个Zip文…

vue前端下载——jszip压缩和解压,结合file-saver导出图片zip,每20个图片分一个目录

使用jszip和file-saver导出图片&#xff0c;并打包为zip&#xff1a; import JSZip from "jszip"; import FileSaver from "file-saver"; 一&#xff0c;jszip解压缩 使用loadAsync&#xff0c;zipFile为压缩包&#xff0c;下面的例子表示读取zip中的resul…

Nginx工作原理和优化总结。

NGINX以高性能的负载均衡器&#xff0c;缓存&#xff0c;和web服务器闻名&#xff0c;驱动了全球超过 40% 最繁忙的网站。在大多数场景下&#xff0c;默认的 NGINX 和 Linux 设置可以很好的工作&#xff0c;但要达到最佳性能&#xff0c;有些时候必须做些调整。首先我们先了解其…

Nginx详细原理

1、Nginx高可用版原理 nginx采用主从架构&#xff0c;客户端发送请求给master&#xff0c;然后由master下发任务到worker实现。 2、nginx任务分配机制(worker工作机制) nginx中master和woker进程之间使用的不是一种轮询的方式而是争抢机制&#xff0c;由于worker不支持java语言…

nginx的工作原理及配置

nginx的工作原理及配置 nginx的模块与工作原理 nginx由内核和模块组成。其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是nginx配置中的一个指令&…

服务器 启动多个nginx_Nginx工作原理和优化总结

NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站。 在大多数场景下,默认的 NGINX 和 Linux 设置可以很好的工作,但要达到最佳性能,有些时候必须做些调整。首先我们先了解其工作原理。 一、Nginx的模块与工作原理 Nginx由内核和模块组成…

Nginx工作原理及基本使用

Nginx工作原理 Nginx默认采用多进程工作方式&#xff0c;Nginx启动后&#xff0c;会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口&#xff0c;同时对进程进行监护&#xff0c;管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文…

Nginx系列一:Nginx介绍与Nginx工作原理分析

一&#xff1a;Nginx概述 Nginx ("engine x") 是一个高性能的轻量级的 HTTP 和反向代理、负载平衡web服务器。 nginx 的并发能力在同类型的网页服务器中表现较好市场占用率很高&#xff0c;中国大陆使用 nginx网站用户有&#xff1a;百度、京东、新浪、网易、腾讯、…

透彻!Ingress-nginx工作原理和实践,这操作可以吧

本文记录/分享 目前项目的 K8s 部署结构和请求追踪改造方案 这个图算是一个通用的前后端分离的 k8s 部署结构: Nginx Ingress 负责暴露服务(nginx前端静态资源服务)&#xff0c; 根据十二要素应用的原 则&#xff0c;将后端 api 作为 nginx 服务的附加动态资源。 Ingress vs I…

nginx的工作原理与nginx的配置

1、nginx的工作原理 nginx的模块直接被编译进nginx&#xff0c;因此属于静态编译方式。 启动nginx后&#xff0c;nginx的模块被自动加载&#xff0c;与Apache不一样&#xff0c;首先将模块编译为一个so文件&#xff0c;然后在配置文件中指定是否进行加载。 在解析配置文件时&am…

详解Nginx的核心原理

Nginx的核心原理 本节为大家介绍Nginx的核心原理&#xff0c;包含Reactor模型、Nginx的模块化设计、Nginx的请求处理阶段。 虽然本节的知识有一定的理论深度&#xff0c;但是与另一个有名的Java底层通信框架Netty在原理上有很多相似的地方。如果大家了解Netty的原理和Reactor…

nginx工作原理、配置以及web服务器的资源请求过程

nginx工作原理、配置以及web服务器的资源请求过程 1. nginx简介2. nginx的特性与优点2.1 nginx的特性2.2 nginx的优点2.3 nginx工作原理2.4 Nginx的模块从功能上分为如下三类&#xff1a; 3. nginx进程架构4. web服务器请求资源的过程5. nginx的配置6. nginx的安装与配置6.1 ng…

Nginx(1)— Nginx工作原理

Nginx的模块与工作原理 Nginx由内核和模块组成&#xff0c;其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是Nginx配置中的一个指令&#xff0c;用于U…

nginx工作原理与配置

nginx工作原理与配置 文章目录 nginx工作原理与配置nginx的模块与工作原理nginx的模块分类nginx的工作原理 nginx的安装与配置nginx安装nginx配置 nginx的配置文件详解nginx.conf配置详解用于调试、定位问题的配置参数https配置基于用户认证开启状态界面URLURL - 统一资源定位器…

Nginx工作原理和优化、漏洞

1. Nginx的模块与工作原理 Nginx由内核和模块组成&#xff0c;其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是Nginx配置中的一个指令&#xff0c;用…

nginx 工作原理

1. Nginx的模块与工作原理 Nginx由内核和模块组成&#xff0c;其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是Nginx配置中的一个指令&#xff0c;用…

nginx工作原理及配置

模块与工作原理 nginx由内核和模块组成。其中&#xff0c;内核的设计非常微小和简洁&#xff0c;完成的工作也非常简单&#xff0c;仅仅通过查找配置文件将客户端请求映射到一个location block&#xff08;location是nginx配置中的一个指令&#xff0c;用于URL匹配&#xff09…