jszip 解压压缩包_JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
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使用详解相关推荐
- python压缩包怎么安装-详解python解压压缩包的五种方法
这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...
- java 使用7z进行解压_java调用7zip解压压缩包的实例
前言 最近的项目中需要用到解压缩包的功能,客户给出的压缩包的格式主要是rar和zip,因此就打算使用java调用7zip的命令行进行解压文件,本文主要记录一下实现的过程以及其中遇到的问题. 7zip命 ...
- linux中.sql.gz文件解压,linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
本文介绍了linux下的压缩程式tar.gzip.gunzip.bzip2.bunzip2.compress .uncompress. zip. unzip.rar.unrar等程式,以及如何使用它们 ...
- 你知道为什么手机qq解压压缩包文件会出现0项吗??
常见的压缩包格式有两种:zip和rar,而我们手机qq上自带的解压软件目前只支持zip,而rar是有专利的,不会集成在任何系统上,这就需要我们去下载第三方软件来解压. 注: (但是有时候我们会发现qq ...
- 下载文件到本地解压压缩包出现文件损坏,报错问题已解决
下载文件到本地解压压缩包出现文件损坏,报错问题已解决 参考文章: (1)下载文件到本地解压压缩包出现文件损坏,报错问题已解决 (2)https://www.cnblogs.com/zly-1209/p ...
- 利用FME PythonCaller调用7z解压压缩包
利用FME PythonCaller调用7z解压压缩包 一.概述 在一些项目中有时候需要对文件目录完整性进行检查,而需要检查的数据又是压缩包的形式.我们都知道FME可以直接读取压缩包里的文件,当通过F ...
- 解压压缩包报错:tar: invalid tar magic
linux解压压缩包报错:tar: invalid tar magic 原因:压缩与解压格式不匹配 例: 压缩:tar -zcvf xxxxx 解压:tar -xvf xxxx 这样的话,压缩与解压格 ...
- 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 ...
- 多层多路径子文件夹批量解压压缩包到指定目录(以B2Z格式压缩包为例)
下载了个层级特别多的压缩包,命名为Apr,Apr下面有30个文件夹,代表30天,每个文件夹下有24个文件夹,代表24个小时,每个小时文件夹下有60个压缩包,代表60分钟,累计43200个压缩包,人工解 ...
- 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 ...
最新文章
- 向vSphere迁移虚拟机,Converter需要升级至4.0.1
- 什么是分布式系统!以及分布式系统架构的优缺点!
- python编程题-python编程练习题目
- 学科网站建设的尝试与思考
- 10亿用户之后,为什么是百度率先打破花园围墙?
- JQuery 文本框高亮显示插件
- 看完这篇操作系统,和面试官扯皮就没问题了!
- 中国人工智能学会通讯——AI时代的若干伦理问题及策略 1.3 构建算法治理的内外部约束机制...
- Golang并发编程组件
- 桌面虚拟化之用户体验篇
- 深入 JavaScript(6) - 一静一动
- struts的action属性自动注入原理
- html实现简易影院购票,打造属于自己的私人影院,竟然这么简单!
- 数据挖掘(Data Mining)扫盲笔记
- 使用js实现百度地图与高德地图经纬度的转换
- web前端——旋转3D魔方
- 右下角出现“测试模式 win7 内部版本7601”如何去掉?
- C#多进程文件读写的锁处理
- springMVC原理,一看明了
- 台式电脑显示配置100%请勿关闭计算机,Win7关机提示“配置Windows Update已完成30%请勿关闭计算机”怎么解决...