Javascript 在客户端将大型文件(>;2GB)压缩为ZIP
我正在使用Javascript 在客户端将大型文件(>;2GB)压缩为ZIP,javascript,html,node.js,upload,compression,Javascript,Html,Node.js,Upload,Compression,我正在使用node.js和socket.io构建一个上传工具,因为它们通常上传非常大的文件,而正常的上传表单不起作用。问题是,他们希望在发送文件之前将文件压缩成zip格式,以提高传输效率 我一直在研究诸如或之类的压缩方法,但这两种方法都不能很好地处理超大文件。我能做什么呢?如果您正在客户端寻找压缩机,我很抱歉地告诉您,JS不是最佳选择 另一方面,最好的办法是告诉用户在上传文件之前先压缩文件。或者甚至使用其他工具(可能是FTP?) 编辑: 哦,顺便说一句,ZIP对随机数据的处理效率非常低,因此压缩
node.js
和socket.io
构建一个上传工具,因为它们通常上传非常大的文件,而正常的上传表单不起作用。问题是,他们希望在发送文件之前将文件压缩成zip格式,以提高传输效率
我一直在研究诸如或之类的压缩方法,但这两种方法都不能很好地处理超大文件。我能做什么呢?如果您正在客户端寻找压缩机,我很抱歉地告诉您,JS不是最佳选择 另一方面,最好的办法是告诉用户在上传文件之前先压缩文件。或者甚至使用其他工具(可能是FTP?) 编辑:
哦,顺便说一句,ZIP对随机数据的处理效率非常低,因此压缩/解压缩会浪费CPU时间,而且不会缩小任何大小。您可以通过以下方式压缩最多4GB的数据:
- 它将只与铬
- 它将非常慢(在我的旧笔记本电脑上,每GB压缩数据大约30分钟)
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
下面是自定义编写器和读取器构造函数的示例。您还可以查看更多示例。为什么要压缩?你能用另一种算法吗?你能制作一个Flash上传器吗?ZIP,因为它是最被广泛接受的。我宁愿不使用Flash。工具中增加了一些功能,我没有对此发表评论。这就是为什么我没有选择FTP,这将是这种操作的明显选择。有闪光的“压缩器”吗?那么,知道它不会变小,压缩它又有什么意义呢?如果你只需要让它看起来像在做什么,那么是的,使用你找到的一个库。我真的认为你应该在做进一步的工作之前更好地理解压缩是如何工作的。“DVD映像”可以压缩到几个字节,具体取决于DVD映像中的数据类型。所以,在继续之前,请理解您的问题。我不想偏离主题,讨论压缩用例。我会记住你的答案,但如果有人有其他有用的东西,我会等待。我删除了它们,因为它们与我的问题无关,我想保持它们的整洁。如果你也这么做,我将不胜感激。