javascript – 将庞大的文件(> 2GB)压缩到客户端的ZIP中

前端之家收集整理的这篇文章主要介绍了javascript – 将庞大的文件(> 2GB)压缩到客户端的ZIP中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用node.js和socket.io构建一个上传工具,因为他们通常会上传非常大的文件,并且正常的上传形式将无法正常工作.问题是他们希望在发送文件之前将文件压缩成zip,以提高传输效率.

我一直在研究像JSZipzip.js这样的压缩方法,但是这些压缩方法都不能很好地用于非常大的文件.我能做什么?

解决方法

您可以使用 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更多的例子.

猜你在找的JavaScript相关文章