node.js - 使用归档器归档文件夹生成一个空 zip

2023-12-08

我正在尝试使用以下方式存档文件夹archiver,我想要存档的文件夹的路径如下所示:

Project
| app.js
| tmp
    |
     folderToArchive
            │file1.txt 
            │file2.txt 
            │file3.txt 

我的服务器端代码将生成 zip 文件,如下所示:

var archiver = require("archiver");

    app.get("/download/:folder", (req, res) => {
    
      var FolderName = req.params.folder;
      var zipName = FolderName + ".zip";
      var source = path.join(__dirname, "tmp", FolderName);
      var out = path.join(__dirname, "tmp", zipName);
    
    
      const archive = archiver('zip', { zlib: { level: 9 }});
      const stream = fs.createWriteStream(out);
    
      return new Promise((resolve, reject) => {
        archive
          .directory(source, false)
          .on('error', err => reject(err))
          .pipe(stream)
        ;
    
        stream.on('close', () => resolve());
        archive.finalize();
        console.log("zip file created");
      });
    
    });

问题是当我运行该应用程序时,它会在正确的目的地创建一个空的 zip 文件。

这对我来说是全新的,我想了解为什么 zip 文件是空的?

Regards


这可能与我有一个空存档的原因相同,这是在存档写入 zip 之前结束的主要过程。

因此,它应该包含在一个承诺中,如下所示:

    async function zipDirectory(source, dest) {
  const stream = fs.createWriteStream(dest);
  const archive = archiver('zip', { zlib: { level: 9 } });

  archive.on('error', function(err) {
  throw err;
  });

  await new Promise((resolve, reject) => {
    archive.pipe(stream);
    archive.directory(source, false);
    archive.on('error', err => {throw err;});
    archive.finalize();

    stream
        .on('close', function() {
        console.log(`zipped ${archive.pointer()} total bytes.`);
        resolve();
        });
  });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

node.js - 使用归档器归档文件夹生成一个空 zip 的相关文章

随机推荐

  • 检索变量声明

    当我几百岁的时候 我怎样才能找到我是如何第一次声明某个变量的 从我第一次声明的地方开始 例如 我声明了以下内容 a lt c vectorA vectorB vectorC 现在我想看看我是如何声明的 我怎样才能做到这一点 谢谢 您可以尝试
  • 参数化 pytest 夹具

    据我从有关 pytest 夹具参数化的文档中了解到 它使用给定的参数创建夹具的副本 从而调用需要具有不同副本的夹具的每个测试 我的需求有点不同 假设有一个固定装置 pytest fixture def sample foo return F
  • “svn:externals”有什么好处?

    如果我没有遇到过 我就不会了解 svn externals这一页 所以 我设置了我的工作文件夹 然后 mkdir lib vendor svn add parents lib vendor svn ps svn externals symf
  • 用于检测浏览器功能/插件的 JavaScript 库

    我正在尝试找到一个 最好是开源的 JS 库来确定尽可能多的有关用户 Web 浏览器环境的信息 我知道可以获得以下数据 屏幕分辨率 User Agent Accept Language 和其他首选项通常在 HTTP 标头中发送 安装的插件 通
  • 如何在 Flutter 中将事件从一个有状态小部件广播到另一个有状态小部件

    我想将事件从一个有状态小部件广播到另一个有状态小部件 但似乎找不到一种方法 我安装了这个插件 event 1 1 4 但它没有触发 我想要如下所示的东西 Stateful Widget 1 SomeEventClass broadcastE
  • PHP 中的 GET URL 参数

    我试图在 php 中将 URL 作为 url 参数传递 但是当我尝试获取此参数时 我什么也没得到 我使用以下网址形式 http localhost dispatch php link www google com 我正在努力解决这个问题 G
  • 使用 JSTL XML taglib 时出错 - 属性 xml 不接受任何表达式

    当我尝试使用 JSTL XML 标记库时出现以下错误 server side transform jsp 51 0 According to TLD or attribute directive in tag file attribute
  • Java 中 ContainsAll 的成本是多少?

    我发现containsAll a List接口方法 在今天的一些编码中 它看起来非常光滑 有谁知道这在性能 迭代方面要花多少钱 The 文档在这方面没有提供太多 使用来源 卢克 编辑 正如博佐指出的 你问的是List containsAll
  • 在 ES6 中导入所有内容,但不在对象内部[重复]

    这个问题在这里已经有答案了 无论如何不写这个 import replace in mtstr tot width rationalize eval expression ascii to latex latex to ascii getIn
  • WIX(删除所有以前的版本)

    在 添加或删除程序 下我可以看到五个版本 ApplicationName v3 0 4 0 ApplicationName v3 0 4 18 ApplicationName v3 0 5 27 ApplicationName v3 0 5
  • Facebook iFrame 应用程序:如何从 URL 查询字符串传递数据

    我有一个带有图片库的 Facebook 应用程序 它是在 Flex 4 中构建的 我想允许用户链接到特定图像 那怎么办呢 我看到完成此操作的唯一方法是在 Facebook 页面 URL 中添加像 my picture asd jpg 这样的
  • 表排序器。按下拉选择排序

    我有一个简单的表 其中包含 ID 和姓名 名字 姓氏 字段 在表格上方有一个下拉列表 其中包含选项 ID 名字 姓氏 根据下拉表的选择进行排序 我不知道如何根据选择触发 tablesort 排序功能 也许这就是你想要的 demo HTML
  • 如何在nextjs中用两个url链接同一页面

    如果用户正在搜索特定城市 我想在页面名称之前的网址中显示城市名称 如果用户没有搜索特定城市 那么我想显示正常的网址 我们如何在 Next Js 中实现这一点 Ex http localhost 3000 Delhi furniture ht
  • 为什么在 Bash 中“false && true”不使用 set -e 退出? [复制]

    这个问题在这里已经有答案了 为什么第三个案例返回成功 退出代码为 0 case 1 bash c set e false true echo success echo success 0 case 2 bash c set e true f
  • 具有动态过滤器/搜索条件的 Ember 路线

    由于以下问题 我已经被困了好几天了 我的用例是我有一个包含数百万个地址的数据库 我想从网络应用程序中搜索它们 显示结果列表 然后显示有关单个地址的信息 一个重要的目标是将搜索条件表示为 URL 的一部分 这样用户就可以返回到以前的搜索 甚至
  • MSI:如何在 InstallValidate 期间卸载时停止服务 - 这仍然可以工作吗?

    我想知道 如果服务被标记为 具体如何以及何时尝试停止Remove uninstall Stop uninstall 在 WiX 项目文件中 我为什么要问 卸载时 重新启动管理器无法识别或正确处理该服务 从而导致 重新启动对话框 我将调试器附
  • Django 中的“正向外键”和“反向外键”是什么?

    当阅读与 Django 相关的主题时选择相关 and 预取相关 在一些网站上 包括堆栈溢出 我经常看到这样的词转发外键 and 反向外键但我在 Django 文档中找不到定义 models py from django db import
  • CodeIgniter 中允许 URL 中包含任何字符

    我正在使用 CodeIgniter PHP 框架 我使用JS动态加载PHP页面 someIFrame writeAttribute src index php controller method escape userGeneratedSt
  • jade 过滤器:带有 a 的对象的 markdown

    我有一个来自数据库的对象 其中包含一些我想用玉渲染的降价标记 但如何呢 当我应用 markdown 过滤器时 我不能再将对象用作对象 但它会被视为文本 我从这里开始 p markdown entry content 这呈现为普通 entry
  • node.js - 使用归档器归档文件夹生成一个空 zip

    我正在尝试使用以下方式存档文件夹archiver 我想要存档的文件夹的路径如下所示 Project app js tmp folderToArchive file1 txt file2 txt file3 txt 我的服务器端代码将生成 z