问题标签 [archiverjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
936 浏览

javascript - 如何使用 Gulp 创建包含大量文件的 ZIP 文件?

我有一个 Gulp 任务,我在 ZIP 文件中添加大量文件(在一种情况下超过 2700 个,但在其他情况下可能是数千个)。代码如下:

此代码适用于小型项目,但是当它处理超过 2000 个文件时,我收到以下错误:

所以我知道在将它们写入 ZIP 之前同时打开 2000 多个文件并不是一个好主意。

如何在无需打开所有文件的情况下要求写入 ZIP 文件?

谢谢。

有关信息:节点 5.5.0 / npm 3.8.5 / archiver 1.0.0 / windows

0 投票
1 回答
51 浏览

node.js - 在 archiverjs 上设置全局匹配的目标路径

我一直在使用archiverjs节点模块,效果很好。我现在想使用 glob 匹配来确定要压缩哪些文件,但我也想在 zip 中设置目标路径,就像使用目录方法destPath中的选项一样。我想知道是否有一个选项或可以实现这一点的东西。

0 投票
1 回答
433 浏览

node.js - 使用 sinon 存根库构造函数调用

到目前为止,我一直在使用 sinon 来存根对我的 nodeJS 代码中包含的对象的函数调用。

例如,我使用请求库,因此在我的测试中我可以存根 http 调用,例如:

我现在遇到了一个场景,我所包含的库需要在我的实际代码中这样调用:

我希望能够存根pipe()对归档程序库的调用,但我认为我需要先存根构造函数调用 - archiver('zip')

我进行了搜索,我认为 sinon 的 createStubInstance 可以帮助我,但我不是 100% 确定。

有人可以帮忙吗?谢谢

0 投票
1 回答
23 浏览

phonegap-build - Archiver v1.3.0 - 如果目录名称不是根文件夹,则无法压缩目录内容

我正在使用https://archiverjs.com/docs/为我的 PhoneGap 应用程序压缩目录,但我还没有设法实现我想要的。

我有一个结构如下的文件夹: - www - css - 图像 - 脚本 - config.xml - index.html

现在我想要的是一个包含 www 文件夹的内容但不包含 www 本身的 zip 文件。

我的代码如下:

我试图添加类似:archive.directory('www/*'); 但它会引发错误。

我还有其他方法可以做到吗?谢谢

0 投票
1 回答
521 浏览

node.js - Windows中目录路径的nodejs zip存档器问题

zip.directory在 Windows 中使用时遇到问题。

这是我要创建的文件结构:

. ├── file1.txt ├── file2.txt └── file3.txt

file2.txt并且file3.txt来自一个名为dir.

这是我在服务器上的代码:

这在 Mac 上运行良好。但是,使用'.'将所有内容放在同一目录中似乎在 Windows 上不起作用(基本上只file1.txt将其放入 zip 中)。

但是,以下内容确实有效:

但是,这给出了这样的文件夹结构:

. ├── file1.txt └── somename ├── file2.txt └── file3.txt

这不是我真正想要的。有没有解决的办法?

0 投票
4 回答
5575 浏览

node.js - node.js - 使用输出为缓冲区的存档器

我想将一些 readeableStreams 压缩到一个 writableStream 中。目的是在内存中完成所有操作,而不是在磁盘上创建实际的 zip 文件。

为此我正在使用归档器

我在网上遇到错误archive.pipe(bufferOutput);

这是错误:“dest.on 不是函数”

我究竟做错了什么?谢谢

更新

我正在运行以下代码进行测试,并且未正确创建 ZIP 文件。我错过了什么?

0 投票
0 回答
137 浏览

node.js - 使用 archivejs 库的归档文件夹

我正在尝试使用archivejs 库归档包含多个文件的文件夹。

作为参数,我将绝对路径发送到包含我的文件的目录。我想在存档的根目录中获取带有文件的压缩目录。我使用 createWriteStream 创建 zip 文件。由于某种原因,它无法正常工作。

我想要达到的目标:

假设我有文件夹 下载我想归档的文件在哪里。然后我创建了download.zip,我希望将所有文件都放在存档的根目录中。

文件未写入我的 zip 文件意味着它变为空。问题应该出在哪里?

0 投票
0 回答
212 浏览

node.js - zip存档中缺少一些文件

我正在将 wkhtmptopdf 创建的 pdf 文件添加到存档器。我的目的是创建所有 pdf 的 zip 文件。我将 zip 发布到 s3 存储桶。但是在存储桶中,zip 文件中缺少一些文件。随机在所有文件中,一些文件在 zip 中是空的。

0 投票
1 回答
22 浏览

javascript - 无法下载动态创建的 ZIP 存档

我正在尝试将 MySQL 查询的输出动态写入存档。这是我的代码:

此代码应该创建一个包含多个文本文件的 zip 存档。用户访问/file页面必须显示文件下载提示,但似乎zip.finalize()无法正常工作,因此我无法下载创建的存档(在我访问时开始下载/file但未完成)。为什么我的代码不起作用?

0 投票
2 回答
2206 浏览

javascript - 使用存档器创建内存中的 .zip,然后将此文件发送到节点服务器上的 koa 客户端

我(作为具有 Koa 框架的节点服务器)需要获取一个 JSON blob,将其转换为扩展名为 .json 的文件,然后将其粘贴到 zip 存档中,然后将存档作为文件附件发送以响应来自的请求客户端。

似乎这样做的方法是使用存档器工具。尽我所能理解,这样做的方法是创建一个存档,将一个 json 博客作为 .json 文件附加到它(它会自动在存档中创建文件?),然后将 .zip “管道”到响应对象. “管道”范式是我理解失败的地方,主要是由于没有得到这些文档所说的内容。

Archiver docs以及一些 stackoverflow答案使用的语言对我来说意味着“通过管道(zip 文件)将数据流式传输到客户端到 HTTP 响应对象。Koa 文档ctx.body可以直接设置为流,所以这就是我尝试的:

尝试 1

逻辑:响应主体应该设置为一个流,并且该流应该是归档流(指向 ctx.body)。

结果:.zip 文件在客户端下载,但 zip 格式不正确(无法打开)。

尝试 2

逻辑:在“将流指向它”之后将主体设置为流确实看起来很愚蠢,因此请复制其他 stackoverflow 示例。

结果:与尝试 1 相同。

尝试 3

基于https://github.com/koajs/koa/issues/944

结果:ctx.request.pipe不是函数。

我可能没有正确阅读这篇文章,但网上的所有内容似乎都表明archive.pipe(some sort of client-sent stream)“神奇地行之有效”。这是存档工具示例文件的引用,“流魔术”是他们使用的词。

如何在内存中将 JSON blob 转换为 .json,然后将该 .json 附加到 .zip 中,然后将其发送到客户端并下载,然后可以成功解压缩以查看 .json

编辑:如果我 console.log the ctx.bodyafter archive.finalize(),它会显示 a ReadableStream,这似乎是正确的。但是,它有一个让我担心的“路径”属性——它是我想知道的 index.html——在客户端的“响应预览”中,我看到了我们的 index.html 的字符串化版本。该文件仍在下载.zip,所以我不太担心,但现在我想知道这是否相关。

EDIT2:深入研究客户端的响应,看起来发回的数据直接来自我们的 index.html,所以现在我很困惑。