JSZip 简单使用

JavaScript033

JSZip 简单使用,第1张

JSZip 是一个用于创建、读取和编辑.zip文件的JavaScript库,且API的使用也很简单。如下是使用 JSZip 压缩一个文件夹到指定目录的例子。

zip.js 文件中内容如下:

命令:

web前端解压zip文件有什么用:

只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说;

如果前端的代码很多, 而且包含大副的图片,那么就可以把js和css和jpg和png等各种数据通过服务端打包成zip传送到浏览器, 浏览器负责解压, css实用动态生成插入到dom中,js也用globalEval直接执行, jpg或者png各种图片文件由blob流转化为image, 直接插入到浏览器中;

html5支持读取Blob(二进制大对象, file文件也是继承了Blob), 并转化为图片流或者文字流或者其他流格式, 这也是为什么浏览器可以读取"application/zip"文件的原因;

要在浏览器中解压zip文件的话需要引入四个js , 因为UnZipArchive.js依赖了zip.js, mime-type.js和jquery.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/UnZipArchive.js"></script></head><body><h2>demo</h2><div><input type="file" id="file"></div><ul id="dir"></ul><script>$("#file").change(function (e) { var file = this.files[0] window.un = new UnZipArchive( file ) un.getData( function() { //获取所以的文件和文件夹列表 var arr = un.getEntries() //拼接字符串 var str = "" for(var i=0i<arr.lengthi++ ) {//点击li的话直接下载文件 str += "<li onclick=download('"+arr[i]+"')>"+arr[i]+"</li>" } $("#dir").html( str ) })})var download = function ( filename ) { un.download( filename )}</script></body></html>

UnzioarichiveJS 是自己封装的, 有任何问题的话请及时反馈

解压ZIP压缩包的完整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> <h2> demo </h2><div> <input type="file" id="file"></div><ul id="dir"> </ul><script> $("#file").change(function (e) { var file = this.files[0] window.un = new UnZipArchive( file ) un.getData( function() {var arr = un.getEntries() var str = "" for(var i=0i<arr.lengthi++ ) { str += "<li onclick=download('"+arr[i]+"')>"+arr[i]+"</li>"} $("#dir").html( str ) }) }) var download = function ( filename ) { un.download( filename ) }</script></div><script>zip.workerScriptsPath = "http://gildas-lormeau.github.io/zip.js/demos/"/** * @desc 解压缩文件的类 * @return UnZipArchive 的实例 * */ var UnZipArchive = function( blob ) { if( !blob ) { alert("参数不正确, 需要一个Blob类型的参数") return } if( !(blob instanceof Blob) ) { alert("参数不是Blob类型") return } function noop() {} this.entries = {} this.zipReader = {} var _this = this this.length = 0 this.onend = noop this.onerror = noop this.onprogress = noop //创建一个延迟对象 var def = this.defer = new $.Deferred() zip.createReader( new zip.BlobReader( blob ), function(zipReader) { _this.zipReader = zipReader zipReader.getEntries(function(entries) {_this.entries = entries //继续执行队列 def.resolve() }) }, this.error.bind(_this) )} /** * @desc 把blob文件转化为dataUrl * */ UnZipArchive.readBlobAsDataURL = function (blob, callback) { var f = new FileReader() f.onload = function(e) {callback( e.target.result )} f.readAsDataURL(blob)} $.extend( UnZipArchive.prototype, { /** * @desc 获取压缩文件的所有入口 * @return ArrayList * */ "getEntries" : function() { var result = [] for(var i= 0, len = this.entries.length i<leni++ ) {result.push( this.entries[i].filename ) } return result }, /** * @desc 获取文件Entry * @return Entry * */ "getEntry" : function ( filename ) { var entrie for(var i= 0, len = this.entries.length i<leni++ ) {if( this.entries[i].filename === filename) { return this.entries[i] } } }, /** * @desc 下载文件 * @param filename * @return void * */ "download" : function ( filename , cb , runoninit) { var _this = this this.defer = this.defer.then(function() {var def = $.Deferred() if(!filename) returnif(runoninit) { return runoninit() } var entry = _this.getEntry( filename ) if(!entry)return entry.getData(new zip.BlobWriter(zip.getMimeType(entry.filename)), function(data) { if( !cb ) { UnZipArchive.readBlobAsDataURL(data, function( dataUrl ) { var downloadButton = document.createElement("a"), URL = window.webkitURL || window.mozURL || window.URL downloadButton.href = dataUrl downloadButton.download = filename downloadButton.click() def.resolve( dataUrl ) _this.onend() })}else{ cb( data ) def.resolve( data )}}) return def }) }, /** * @desc 获取对应的blob数据 * @param filename 文件名 * @param callback回调, 参数为 blob * @desc 或者可以直接传一个函数作为zip解压缩完毕的回调 * */ "getData" : function ( filename, fn ) { if( typeof filename === "string") {this.download(filename, function( blob ) { fn&&fn( blob ) }) }else if( typeof filename === "function") {this.download("test", null, function( blob ) { filename() }) } }, "error" : function() { this.onerror( this ) throw new Error("压缩文件解压失败") } })</script></body></html>

问题一:压缩文件方式选择哪种,占空间最小? 压缩方式的“储存”是不做压缩,“最快、 较快 、标准 、较好、 最好”是逐渐级提高压缩率所以最好压缩率最高,占空间最小

问题二:哪种压缩格式好?例如ZIP、TAR、TAR.GZ等等 zip兼容性最好。国外的朋友几乎不用rar。

rar独有格式也很好,带恢复,分卷稳定。速度和压缩比都尚可。

7z是比较常见的高压缩率速度也平衡的格式。

tar.gz在linux系统下用得多,但是在windows下普及率不高。

不同软件压缩、解压的速度也会因为优化而不同,综合来说7z是最常用最好用的格式。

但是,任何一种压缩算法都有其优势与劣势,没有绝对的好和差。

问题三:压缩文件哪种格式最好 最常见的有r搐r与zip,个人认为用rar较好,另外还有一种是7z,它是目前压缩得最厉害的格式,但使用的人不多.最好用rar

问题四:常见的压缩文件格式有哪些?各有什么优点 我从网上拷的==

常见压缩文件格式及压缩软件默认分类 2010-03-05 19:18:33 阅读42 评论0 字号:大中小

主题: 常见压缩文件格式及压缩软件

文件压缩,原本是在那个存储空间甚至需要以字节来计算的时代,为了节省文件所占用的空间而诞生的。而随着网络的普及,为了节省文件在网络上传输的流量及时间,对文件进行压缩也几乎成为了必备的过程。

根据所使用的压缩算法的不同,压缩文件也被区分为不同的格式。图片中的列表是大多数常见的压缩文件格式,不过常用的并没有那么多,而?在Windows系统上面常用的就更少了。下面,我就来为大家简单的介绍一下Windows系统中经常会用到的几种压缩文件格式,以及常用的压缩和解压缩软件。

ZIP

ZIP应该算是最常见的压缩文件格式了,你甚至不需要单独为它安装一个压缩或者解压缩软件,因为我们使用的Windows系统以及集成了对ZIP压缩格式的支持。

经历过DOS时代的朋友可能还记得ARJ格式,它基本就是DOS时代ZIP,直到ZIP的出现,以更高的压缩效率取代了ARJ,成为了大家的首选。现在的大多数操作系统都会集成对ZIP文件的支持,而所有的压缩软件也都会提供对ZIP文件的支持,这些足以体现出ZIP格式的地位。

ZIP时代最出名的压缩软件就要数WinZIP了,它几乎是当时每台电脑都必备的软件。直到Windows系统开始集成了对ZIP文件的支持,以及后起新秀RAR格式的出现,使得WinZIP不再是那么的必要,才让它逐渐退出了大家的视线。

RAR

虽然ZIP在压缩文件格式中地位很高,但现在相当多的下载网站都选择了用RAR格式来压缩他们的文件,最根本的原因就在于RAR格式的文件压缩率比ZIP更高。

同样的文件使用RAR格式进行压缩后得到的大小通常都会比使用ZIP压缩后更小,而我们对文件进行压缩的主要目的就是要减小文件大小以便于网络传输,正巧RAR格式又出现在网络刚刚开始普及的时候,所以RAR逐渐取代ZIP的地位也就是情理之中的事了。

对RAR文件进行压缩或者解压缩,首选的软件当然是WinRAR,与之前的WinZIP一样,它几乎也是现在每台电脑都必装的软件。不过需要提醒大家的是,作为商业软件,WinRAR只允许用户进行30天的免费试用,虽然过期后软件仍然能够正常工作,但就已经不再合法了。

7Z

作为压缩格式的后起新秀,7Z有着比RAR更高的压缩率,能够将文件压缩的更加小巧。不过因为RAR格式已经高度普及,又没有网络普及的“天时”相助,7Z想要取代RAR现在的地位还是相当不容易的。

与之前两种格式一样,7Z也有着专门支持它的软件:7-zip。使用7-zip可以解压缩RAR格式的压缩文件,而WinRAR也同样可以解压缩7Z格式的压缩文件。

大概因为直接使用现有的WinRAR就可以处理网络上下载到的7Z格式文件,而要将文件压缩成7Z格式的话却需要额外安装7-zip,所以也间接的妨碍了7Z格式的普及吧。WinZIP当年就是因为没有及时的提供对RAR格式的支持而被WinRAR钻了空子。

CAB

CAB是微软的一种安装文件压缩格式,主要应用于软件的安装程序中。因为涉及到安装程序,所以CAB文件中包含的文件通常都不是简单的直接压缩,而是对文件名等都进行了处理,所以虽然可以对其直接解压缩,但解压后得到的文件通常都无法直接使用。

和ZIP一样,Windows系统自身就可以打开CAB......>>

问题五:无损压缩有哪几种格式? 所谓无损压缩格式,是利用数据常统计冗余进行压缩,可完全回复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为2:1到5:1.这类方法广泛用于文本数据,程序和特殊应用场合的图像数据(如指纹图像,医学图像等)的压缩。由于压缩比的限制,仅使用无损压缩方法是不可能解决图像和数字视频的存储和传输的所有问题.经常使用的无损压缩方法有 Shannon-Fano 编码,Huffman 编码,游程(Run-length)编码,LZW(Lempel-Ziv-Welch)编码和算术编码等。

所谓无损压缩格式,顾名思义,就是毫无损失地将声音信号进行压缩的音频格式。常见的像MP3、WMA等格式都是有损压缩格式,相比于作为源的WAV文件,它们都有相当大程度的信号丢失,这也是它们能达到10%的压缩率的根本原因。而无损压缩格式,就好比用Zip或RAR这样的压缩软件去压缩音频信号,得到的压缩格式还原成WAV文件,和作为源的WAV文件是一模一样的!但是如果用Zip或RAR来压缩WAV文件的话,必须将压缩包解压后才能播放。而无损压缩格式则能直接通过播放软件实现实时播放,使用起来和MP3等有损格式一模一样。总而言之,无损压缩格式就是能在不牺牲任何音频信号的前提下,减少WAV文件体积的格式。

问题六:图片中的格式哪种是最好的? BMP:Windows系统下的标准位图格式,未经过压缩,这种图像文件比穿大。平时我们用画图程序画出的图形的格式就是这一种。

JPEG(JPG):应用最广泛的图片格式之一,这种图片是经过压缩而来的,文件较小,便于在网络上传输,网页上大部分图片就是这种格式。

GIF:分为静态GIF和动画GIF两种,“体型”娇小,网上很多小动画都是GIF格式。GIF其实是将多幅图像保存为一个图像文件,从而形成的动画。

PSD:图像处理软件Photoshop的专用图像格式,图像文件较大。

PCX:ZSOFT公司在开发图像处理软件Paintbrush时开发的一种格式。它是经过压缩的格式,占用磁盘空间较少,并具有压缩及全彩色的优点。

PNG:与JPG格式类似,网页中很多图片都是这种格式,支持图像透明。

问题七:压缩文件类型哪个好 7z 好 压缩率 最高 一、目录表(TOC)与分卷(Volume)

抛开压缩算法不谈,我认为zip、rar在文件格式上最大的差异就在目录表(Table of Contents,TOC):zip有TOC,而rar没有。

TOC这个词其实是从出版界借用过来的,指的就是每一本书正文前面的“目录”,它的作用地球人都知道:如果想快速找到书中某一内容,可以先查TOC,然后按照TOC指明的页码直接翻即可。

在纸质书里TOC是印刷出来的一张表,而在电子文件里则是由结构化数据构成的一张表,它的目的同样是为了快速定位:如果想找文件中的某一内容,可以先查TOC,知道感兴趣的内容在文件的什么位置,直接跳过去就行了。最常见的运用就是avi、rm等多媒体文件:播放的时候经常有人在播放条上点来点去跳着看(即“随机访问”),如果没有TOC,在长达几百兆的文件里来回定位会慢死。

具体到zip文件里,TOC是放在文件尾部的一张表,里面列出了zip包中每一个文件的属性(文件名、长度等)和在zip包中的存放位置。如果需要随机访问zip包中的某一个文件,只需在TOC里找到这个文件的存放位置,直接跳过去即可。

而RAR文件里则没有TOC,在文件头之后所有文件按顺序连续存放。

这种差异造成的结果就是:随机访问时zip比rar快,而顺序访问时rar比zip快。

所谓随机访问,就是前面说过的随机访问压缩包中某个指定的文件。举一个简单的例子:一本反编译或下载到的网页电子书,有大量HTML、图像、css、js,然后打成压缩包。现在要求在不解包的情况下访问其中的页面:可以想象,打开每个HTML页面的时候,它所附带的图像、css、js等文件可能随机分布在整个压缩包里,如果没有TOC,查找每个文件的时候都要从头开始找,将会有多慢。 所以各位可以理解为什么jar包就是标准zip包,而我也只用zip格式保存反编译出来的电子书、漫画、PDG书等一切可能需要随机访问的东西。

所谓顺序访问,就是将整个压缩包从头解到尾。在这方面RAR具有天然的优势。而且为了节省WinRAR列文件的时间,对于单个RAR我一般都直接通过右键菜单解压缩,很少双击压缩包打开再解压。

由于rar的原作者已经去世,造成这种差异的确切原因我相信已不可考,但我个人猜测可能与DOS时代的备份软件之争有关:在DOS时代,电脑硬盘不像现在这样奢侈,20MB就算很大了。这样的容量用两盒软盘 即可备份,备份成本相对数据本身的价值来说非常低廉。因此在DOS时代,很多公司和机构都制定有定期硬盘备份政策,以免因为人为或非人为的因素 (早期硬盘可没有如今可靠)而造成不可挽回的数据损失。在备份软件方面,虽然微软已经随DOS提供了BackupRestore工具,但是他们基本不具备数据压缩能力,因此在压缩软件中提供备份功能,就成为DOS时代的一个时尚。由于DOS时代的备份介质多为软盘,因此压缩 软件的备份功能其实就转化成如今很常见的一个功能:分卷压缩功能,即按照软盘容量进行分卷压缩,然后将分卷压缩文件备份(Backup)到软盘,需要的时候再解压,或恢复(Restore)到硬盘。

DOS时代最有名的zip工具是pkzip,出现得比DOS版的RAR早。在分卷压缩时,pkzip按照zip文件规范,将TOC存放在最后,即存储在最后一卷,由此带来如下问题:

1、恢复时,每解压一张盘,都要先将最后一张盘 *** 去一次,读一次TOC。

2、只要最后一张盘上的TOC坏了,就算其它盘都是好的,也不能正常解压。

这两个缺点,尤其是第一个缺......>>

问题八:哪种图片压缩格式最好? 这位朋友,mp3确实本身就是一种压缩文件,它是一种有损压缩格式,也就是说通过牺牲了一部分音乐质量来换取小巧的体积,同样的还有wma等格式 如果您确实嫌一些高码率的mp3(如320kbps等)文件过大,而对音乐的质量要求不是非常的高,可以使用软件将其压缩为48~64kbps左右的wma,这样可以减少体积,而且音质不会损失太大,可以满足一般人的欣赏要求,即使mp3随身听绝大多数也都支持wma格式

当然进行转换,可以简单的使用千千静听播放器进行,将文件添加到播放列表,选中后(在列表窗口中)单击右键选择“转换格式…”,然后选择编码器,比如wma的或者mp3的,然后配置一下,选择合适的码率(即kbps),就可以进行压缩编码了

问题九:哪种压缩格式最小?用什么软件压缩? WinRAR 简体中文版 3.60 beta 7 特别版

7-Zip v5.0 SP1 简体中文版『号称有着现今最高压缩比的压缩软件』

7-Zip是一款号称有着现今最高压缩比的压缩软件,它不仅支持独有的7z文件格式,而且还支持各种其它压缩文件格式,其中包括ZIP, RAR, CAB, GZIP, BZIP2和TAR。此软件压缩的压缩比要比普通ZIP文件高30-50%。因此,它可以把经WinZip压缩的文件再压缩2-10%。

此5.0版本更加拥有强大的〈安装程序制作功能〉。经过全新编程。语言及界面更加友好!下载页面有详细介绍!并且此软件内已附带一款精美的《一键通档案》。它可以说明一切问题!

UHARC GUI v3.06 绿色修正汉化版『世界上压缩比最高的软件』

称得上是世界上压缩比最高的软件。 我压Longhorn4008+Longhorn4015(差不多1.15G),压缩后大小为698Mb!几乎减掉了一半,文件越大压缩比越高

UHARC GUI 称得上是世界上压缩比最高的软件,他的超强压缩比可以让RAR,7Z 汗颜,支持创建自解压缩包。

安装说明:直接安装即可。

汉化说明:

此汉化版完全汉化了 UHARC GUI 还汉化 UHARC_04 UHARC_06 NSIS 的提示信息,现在创建的自解压缩包为中文。

问题十:压缩文件的格式有哪几种,一般手机支持哪几种呢? 压缩文件有很多种,常见的有rar 、zip 等。普通手机不支持压缩文件。目前好多智能手机上有zip管理器,同时支持rar 和zip 。注意jar 的文件虽然是压缩包,但它是java 应用程序的一种格式,与实际意义上的压缩文件不一样