解决方法
您可以使用
zip.js压缩高达4GB的数据,但是:
>它只能使用Chrome
>这将非常慢(我的旧笔记本电脑每GB压缩数据约30分钟)
您可以使用this demo在线尝试.您必须在“选择临时存储”输入中选择“HDD”选项.然后,您可以从文件系统导入大文件并监视内存消耗:它应该是稳定的(笔记本电脑上大约有300MB).
选择“HDD”表示zip.js将使用File API: Directories and System来存储压缩数据.该API目前仅在Chrome上可用,并允许将数据写入沙盒虚拟文件系统.演示使用不需要用户权限的临时存储.
编辑:您还可以实现自己的Writer constructor功能,将数据流传输到您的服务器,而zip.js压缩它:它不会依赖于文件系统API,并且应该适用于您支持的每个浏览器.作家必须实现这两种方法:
init(callback[,onerror]) // initializes the stream where to write the zipped data writeUint8Array(array,callback[,onerror]) // writes asynchronously a Uint8Array into the stream. // getData method is optional
这是an example的自定义Writer和Reader构造函数.您还可以查看zip.js Writers implementations更多的例子.