我正在构建一个上传工具 node.js
和 socket.io
,因为他们通常上传难以置信的巨大文件,普通的上传表格无法正常工作。问题是他们希望在发送之前将文件压缩成zip,以提高传输效率。
我正在构建一个上传工具 node.js
和 socket.io
,因为他们通常上传难以置信的巨大文件,普通的上传表格无法正常工作。问题是他们希望在发送之前将文件压缩成zip,以提高传输效率。
您可以使用压缩最多4GB的数据 zip.js 但:
你可以在线试试 这个演示。您必须在“选择临时存储”输入中选择“HDD”选项。然后你可以从文件系统导入大文件并监视内存消耗:它应该是稳定的(我的笔记本电脑上大约300MB)。
选择“HDD”意味着zip.js将使用 文件API:目录和系统 存储压缩数据。此API目前仅适用于Chrome,并允许将数据写入沙盒虚拟文件系统。该演示使用不需要用户权限的临时存储。
编辑:您也可以实现自己的 作家构造函数 zip.js压缩它时,将数据流传输到服务器的功能:它不依赖于文件系统API,应该适用于您支持的每个浏览器。 Writer必须实现这两种方法:
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
这是 一个例子 自定义Writer和Reader构造函数。你也可以看看 zip.js作家实现 更多例子。
如果您正在寻找客户端的压缩器,我很遗憾地告诉您,JS不是可行的方法。
另一方面,最好的办法是告诉用户在上传之前压缩文件。或者甚至使用其他一些工具(FTP也许?)。
编辑:
哦,顺便说一句,ZIP对于随机数据来说效率非常低,所以你会浪费CPU时间进行压缩/解压缩,你几乎不会缩小任何大小。