JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解_javascript技巧
zip.js是什么
zip.js的github项目地址:http://gildas-lormeau.github.io/zip.js/
通过zip.js封装一个能在网页端生成zip文件的插件, 直接在网页中创建包含文件夹和文件的压缩包,也可以自定义名字并下载;
如何使用:
1:引用zip.js
2:引用jQuery;
3:并引用封装的ZipArchive.js ,(因为zip.js的api使用起来比较繁琐,所以自己封装实现了这个插件)
4:引用mime-types.js;
查看DEMO, 使用方式为:
运行下面代码
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script> <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script> <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script> <script src="http://files.cnblogs.com/files/diligenceday/ZipArchive.js"></script> </head> <body> <script> var z = new ZipArchive; z.addFile("a/a.txt", "aaaaaaacontent"); z.addFile("aaaa.txt", "aaaaaaaccccc"); z.export("nono"); </script> </body> </html>
DEMO在后面:文件下载下来, 文件夹的格式如下:
回到顶部
创建压缩文件和文件夹的详细源代码:
运行下面代码
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="http://gildas-lormeau.github.io/zip.js/demos/zip.js"></script> <script src="http://gildas-lormeau.github.io/zip.js/demos/mime-types.js"></script> <script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.js"></script> <style> code{ display: block; padding: 10px; background: #eee; } </style> </head> <body> <div> <h1> 兼容性 </h1> <div> <p> zip.js可以在所有的chrome浏览器和firefox浏览器中运行, 可以在safari6和IE10,以及IE10以上运行; </p> <p> 如果要在IE9和safari中运行需要两个设置: </p> <code> 1:zip.useWebWorkers == false </code> <code> 2:并引用这个JS:https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b/js/typedarray.js </code> </div> </div> <script> zip.workerScriptsPath = "http://gildas-lormeau.github.io/zip.js/demos/"; /** * @desc 压缩文件; * @event onprogress, onend, onerror; * */ var ZipArchive = function() { function noop() {}; this.name = "未命名文件"; this.zippedBlob = {}; var _this = this; this.length = 0; this.onend = noop; this.onerror = noop; this.onprogress = noop; //创建一个延迟对象; var def = this.defer = new $.Deferred(); zip.createWriter( new zip.BlobWriter("application/zip"), function(zipWriter) { _this.zipWriter = zipWriter; //继续执行队列; def.resolve(); }, this.error ); }; ZipArchive.blob = function (filename, content) { return new Blob([ content ], { type : zip.getMimeType(filename) }); }; $.extend( ZipArchive.prototype, { /** * @desc 添加文件 * @param String filename为文件的名字; * @param String content; * @param Object options 传参 * 例如:{ level : 0} 压缩的等级,0 到 9; * 例如:{ comment : "提示文字" } * 例如:{ lastModDate : "最后编辑时间" } * */ "addFile" : function ( filename , content, options) { var _this = this; blob = ZipArchive.blob(filename, content); //为了产生链式的效果, 必须把deferrer赋值给新的defer this.defer = this.defer.then(function() { var def = $.Deferred(); _this.zipWriter.add(filename, new zip.BlobReader(blob) ,function() { // reader console.log("addFile success!!"); def.resolve(); //zipWriter.close(callback); }, function (size, total) { //onend _this.onend(filename, blob, total); _this.length += total; }, function () { //onprogress _this.onprogress(filename, blob, total); },options || { //options }); return def; }); }, /** * @desc 添加文件夹, 我发现这个文件无法创建; * @desc 创建文件夹功能不好用, 需要创建文件夹你通过 zipWriter.addFile("directory/filename.txt", blob())创建文件夹和对应文件;; * */ "_addFolder" : function (foldername , options) { //创建文件夹功能目前不能用; //创建文件夹功能不好用, 直接通过 zipWriter.addFile("directory/filename.txt", blob())创建文件夹和文件 return this; }, "size" : function () { return this.length; }, /** * @desc 获取blob文件 * */ "get" : function () { return this.zippedBlob; }, /** * @desc 导出为zip文件 * */ "export" : function ( name ) { name = name || this.name; var _this = this; this.defer.then(function() { _this.zipWriter.close(function( zippedBlob ) { if( typeof name === "string" || typeof name === "number") { var downloadButton = document.createElement("a"), URL = window.webkitURL || window.mozURL || window.URL; downloadButton.href = URL.createObjectURL( zippedBlob ); downloadButton.download = name + ".zip"; downloadButton.click(); }else{ name( zippedBlob ); }; }); }); }, "error" : function() { this.onerror( this ); throw new Error("压缩文件创建失败"); } }); </script> <script> var z = new ZipArchive; z.addFile("a/a.txt", "aaaaaaacontent"); z.addFile("aaaa.txt", "aaaaaaaccccc"); z.export("nono"); </script> </body> </html>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript是一种广泛应用于Web开发的编程语言,而WebSocket则是一种用于实时通信的网络协议。结合二者的强大功能,我们可以打造一个高效的实时图像处理系统。本文将介绍如何利用JavaScript和WebSocket来实现这个系统,并提供具体的代码示例。首先,我们需要明确实时图像处理系统的需求和目标。假设我们有一个摄像头设备,可以采集实时的图像数
