zip.js是什么

通过zip.js封装一个能在网页端生成zip文件的插件, 直接在网页中创建包含文件夹和文件的压缩包,也可以自定义名字并下载;

如何使用:

1:引用zip.js

2:引用jQuery;

3:并引用封装的ZipArchive.js ,(因为zip.js的api使用起来比较繁琐,所以自己封装实现了这个插件)

4:引用mime-types.js;

查看DEMO, 使用方式为:

运行下面代码

var z = new ZipArchive;

z.addFile("a/a.txt", "aaaaaaacontent");

z.addFile("aaaa.txt", "aaaaaaaccccc");

z.export("nono");

DEMO在后面:文件下载下来, 文件夹的格式如下:

回到顶部

创建压缩文件和文件夹的详细源代码:

运行下面代码

code{

display: block;

padding: 10px;

background: #eee;

}

兼容性

zip.js可以在所有的chrome浏览器和firefox浏览器中运行, 可以在safari6和IE10,以及IE10以上运行;

如果要在IE9和safari中运行需要两个设置:

1:zip.useWebWorkers == false

2:并引用这个JS:https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b/js/typedarray.js

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("压缩文件创建失败");

}

});

var z = new ZipArchive;

z.addFile("a/a.txt", "aaaaaaacontent");

z.addFile("aaaa.txt", "aaaaaaaccccc");

z.export("nono");

jszip 解压压缩包_JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解相关推荐

  1. python压缩包怎么安装-详解python解压压缩包的五种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

  2. java 使用7z进行解压_java调用7zip解压压缩包的实例

    前言 最近的项目中需要用到解压缩包的功能,客户给出的压缩包的格式主要是rar和zip,因此就打算使用java调用7zip的命令行进行解压文件,本文主要记录一下实现的过程以及其中遇到的问题. 7zip命 ...

  3. linux中.sql.gz文件解压,linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    本文介绍了linux下的压缩程式tar.gzip.gunzip.bzip2.bunzip2.compress .uncompress. zip. unzip.rar.unrar等程式,以及如何使用它们 ...

  4. 你知道为什么手机qq解压压缩包文件会出现0项吗??

    常见的压缩包格式有两种:zip和rar,而我们手机qq上自带的解压软件目前只支持zip,而rar是有专利的,不会集成在任何系统上,这就需要我们去下载第三方软件来解压. 注: (但是有时候我们会发现qq ...

  5. 下载文件到本地解压压缩包出现文件损坏,报错问题已解决

    下载文件到本地解压压缩包出现文件损坏,报错问题已解决 参考文章: (1)下载文件到本地解压压缩包出现文件损坏,报错问题已解决 (2)https://www.cnblogs.com/zly-1209/p ...

  6. 利用FME PythonCaller调用7z解压压缩包

    利用FME PythonCaller调用7z解压压缩包 一.概述 在一些项目中有时候需要对文件目录完整性进行检查,而需要检查的数据又是压缩包的形式.我们都知道FME可以直接读取压缩包里的文件,当通过F ...

  7. 解压压缩包报错:tar: invalid tar magic

    linux解压压缩包报错:tar: invalid tar magic 原因:压缩与解压格式不匹配 例: 压缩:tar -zcvf xxxxx 解压:tar -xvf xxxx 这样的话,压缩与解压格 ...

  8. C# 解压压缩包及 7z 库缺失导致 Can not load 7-zip library or internal COM error!

    表现 C# 程序解压 7z 文件的时候抛出异常 Can not load 7-zip library or internal COM error! Message: DLL file does not ...

  9. 多层多路径子文件夹批量解压压缩包到指定目录(以B2Z格式压缩包为例)

    下载了个层级特别多的压缩包,命名为Apr,Apr下面有30个文件夹,代表30天,每个文件夹下有24个文件夹,代表24个小时,每个小时文件夹下有60个压缩包,代表60分钟,累计43200个压缩包,人工解 ...

  10. ActiveMQ的安装和启动 安装JAVA配置JAVA环境 下载ActiveMQ 解压压缩包 tar zxvf activemq-x.x.x-bin.tar.gz 至此,linux下Activ

    ActiveMQ的安装和启动 安装JAVA配置JAVA环境 下载ActiveMQ 解压压缩包  tar zxvf activemq-x.x.x-bin.tar.gz 至此,linux下ActiveMQ ...

最新文章

  1. 向vSphere迁移虚拟机,Converter需要升级至4.0.1
  2. 什么是分布式系统!以及分布式系统架构的优缺点!
  3. python编程题-python编程练习题目
  4. 学科网站建设的尝试与思考
  5. 10亿用户之后,为什么是百度率先打破花园围墙?
  6. JQuery 文本框高亮显示插件
  7. 看完这篇操作系统,和面试官扯皮就没问题了!
  8. 中国人工智能学会通讯——AI时代的若干伦理问题及策略 1.3 构建算法治理的内外部约束机制...
  9. Golang并发编程组件
  10. 桌面虚拟化之用户体验篇
  11. 深入 JavaScript(6) - 一静一动
  12. struts的action属性自动注入原理
  13. html实现简易影院购票,打造属于自己的私人影院,竟然这么简单!
  14. 数据挖掘(Data Mining)扫盲笔记
  15. 使用js实现百度地图与高德地图经纬度的转换
  16. web前端——旋转3D魔方
  17. 右下角出现“测试模式 win7 内部版本7601”如何去掉?
  18. C#多进程文件读写的锁处理
  19. springMVC原理,一看明了
  20. 台式电脑显示配置100%请勿关闭计算机,Win7关机提示“配置Windows Update已完成30%请勿关闭计算机”怎么解决...

热门文章

  1. 李宏毅机器学习——循环神经网络(一)
  2. Fedora13下编译libfetion的问题和解决办法
  3. 拆解兼容Qi充电标准的三星无线充电器
  4. 主流七款web服务器软件点评,几款比较好的WEB服务器软件推荐
  5. Day 9 2021.3.10多线程-Lambda表达式-File类
  6. 麒麟V10系统-软件商店更新源问题
  7. McAfee官方卸载工具下载及使用
  8. [ERP/鼎捷E10][生产管理]指定完工
  9. 使用jQuery美化英雄联盟
  10. logback开启异步打印