使用NodeJs zip-stream或archiver模块将文件添加到现有的压缩存档中

时间:2014-04-07 02:58:53

标签: node.js zip zipstream

我有这种情况:

我有一个供用户下载的zip文件,但每次下载时,我都希望包含一个自述文件'具有用户特定内容的文件(例如,具有用户的姓名和下载时间)。我使用archiver(zip-stream)模块将压缩内容压缩并流式传输到浏览器。目标是最小化CPU使用(即压缩)和存储(即创建相同zip的副本)。以下是使用cons实现此目的的一些可能方法。

  1. 每次下载时,请复制原始zip,然后在流式传输到浏览器之前将动态生成的自述文件添加到副本中。如果许多用户同时下载,这将创建原始zip文件的许多重复副本。这是不可接受的,因为zip文件可以大到2Gb。

  2. 每次下载时,都会为包含原始zip文件和自述文件的流式处理创建新的zip。这可以节省CPU和存储空间,因为新的zip是动态创建的。但这意味着用户下载后必须解压缩两次,这是不可接受的。

  3. 我想知道我是否可以存储一个" unfinalise" zip文件,并在最终确定并将其流式传输到浏览器之前将自述文件附加到其中。

0 个答案:

没有答案