Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在客户端将大型文件(>;2GB)压缩为ZIP_Javascript_Html_Node.js_Upload_Compression - Fatal编程技术网

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分钟)
你可以在网上试用。您必须在“选择临时存储”输入中选择“HDD”选项。然后,您可以从文件系统导入大文件并监控内存消耗:它应该是稳定的(在我的笔记本电脑上大约为300MB)

选择“HDD”意味着zip.js将用于存储压缩数据。该API目前仅在Chrome上可用,并允许将数据写入沙盒虚拟文件系统。演示使用不需要用户权限的临时存储

编辑:您还可以实现自己的功能,在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

下面是自定义编写器和读取器构造函数的示例。您还可以查看更多示例。

为什么要压缩?你能用另一种算法吗?你能制作一个Flash上传器吗?ZIP,因为它是最被广泛接受的。我宁愿不使用Flash。工具中增加了一些功能,我没有对此发表评论。这就是为什么我没有选择FTP,这将是这种操作的明显选择。有闪光的“压缩器”吗?那么,知道它不会变小,压缩它又有什么意义呢?如果你只需要让它看起来像在做什么,那么是的,使用你找到的一个库。我真的认为你应该在做进一步的工作之前更好地理解压缩是如何工作的。“DVD映像”可以压缩到几个字节,具体取决于DVD映像中的数据类型。所以,在继续之前,请理解您的问题。我不想偏离主题,讨论压缩用例。我会记住你的答案,但如果有人有其他有用的东西,我会等待。我删除了它们,因为它们与我的问题无关,我想保持它们的整洁。如果你也这么做,我将不胜感激。