问题标签 [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.
javascript - 如何使用 Gulp 创建包含大量文件的 ZIP 文件?
我有一个 Gulp 任务,我在 ZIP 文件中添加大量文件(在一种情况下超过 2700 个,但在其他情况下可能是数千个)。代码如下:
此代码适用于小型项目,但是当它处理超过 2000 个文件时,我收到以下错误:
所以我知道在将它们写入 ZIP 之前同时打开 2000 多个文件并不是一个好主意。
如何在无需打开所有文件的情况下要求写入 ZIP 文件?
谢谢。
有关信息:节点 5.5.0 / npm 3.8.5 / archiver 1.0.0 / windows
node.js - 在 archiverjs 上设置全局匹配的目标路径
我一直在使用archiverjs
节点模块,效果很好。我现在想使用 glob 匹配来确定要压缩哪些文件,但我也想在 zip 中设置目标路径,就像使用目录方法destPath
中的选项一样。我想知道是否有一个选项或可以实现这一点的东西。
node.js - 使用 sinon 存根库构造函数调用
到目前为止,我一直在使用 sinon 来存根对我的 nodeJS 代码中包含的对象的函数调用。
例如,我使用请求库,因此在我的测试中我可以存根 http 调用,例如:
我现在遇到了一个场景,我所包含的库需要在我的实际代码中这样调用:
我希望能够存根pipe()
对归档程序库的调用,但我认为我需要先存根构造函数调用 - archiver('zip')
?
我进行了搜索,我认为 sinon 的 createStubInstance 可以帮助我,但我不是 100% 确定。
有人可以帮忙吗?谢谢
phonegap-build - Archiver v1.3.0 - 如果目录名称不是根文件夹,则无法压缩目录内容
我正在使用https://archiverjs.com/docs/为我的 PhoneGap 应用程序压缩目录,但我还没有设法实现我想要的。
我有一个结构如下的文件夹: - www - css - 图像 - 脚本 - config.xml - index.html
现在我想要的是一个包含 www 文件夹的内容但不包含 www 本身的 zip 文件。
我的代码如下:
我试图添加类似:archive.directory('www/*'); 但它会引发错误。
我还有其他方法可以做到吗?谢谢
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
这不是我真正想要的。有没有解决的办法?
node.js - node.js - 使用输出为缓冲区的存档器
我想将一些 readeableStreams 压缩到一个 writableStream 中。目的是在内存中完成所有操作,而不是在磁盘上创建实际的 zip 文件。
为此我正在使用归档器
我在网上遇到错误archive.pipe(bufferOutput);
。
这是错误:“dest.on 不是函数”
我究竟做错了什么?谢谢
更新:
我正在运行以下代码进行测试,并且未正确创建 ZIP 文件。我错过了什么?
node.js - 使用 archivejs 库的归档文件夹
我正在尝试使用archivejs 库归档包含多个文件的文件夹。
作为参数,我将绝对路径发送到包含我的文件的目录。我想在存档的根目录中获取带有文件的压缩目录。我使用 createWriteStream 创建 zip 文件。由于某种原因,它无法正常工作。
我想要达到的目标:
假设我有文件夹 下载我想归档的文件在哪里。然后我创建了download.zip,我希望将所有文件都放在存档的根目录中。
文件未写入我的 zip 文件意味着它变为空。问题应该出在哪里?
node.js - zip存档中缺少一些文件
我正在将 wkhtmptopdf 创建的 pdf 文件添加到存档器。我的目的是创建所有 pdf 的 zip 文件。我将 zip 发布到 s3 存储桶。但是在存储桶中,zip 文件中缺少一些文件。随机在所有文件中,一些文件在 zip 中是空的。
javascript - 无法下载动态创建的 ZIP 存档
我正在尝试将 MySQL 查询的输出动态写入存档。这是我的代码:
此代码应该创建一个包含多个文本文件的 zip 存档。用户访问/file
页面必须显示文件下载提示,但似乎zip.finalize()
无法正常工作,因此我无法下载创建的存档(在我访问时开始下载/file
但未完成)。为什么我的代码不起作用?
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.body
after archive.finalize()
,它会显示 a ReadableStream
,这似乎是正确的。但是,它有一个让我担心的“路径”属性——它是我想知道的 index.html——在客户端的“响应预览”中,我看到了我们的 index.html 的字符串化版本。该文件仍在下载.zip,所以我不太担心,但现在我想知道这是否相关。
EDIT2:深入研究客户端的响应,看起来发回的数据直接来自我们的 index.html,所以现在我很困惑。