【问题标题】:How to download zip and directly extract zip via node?如何通过node下载zip并直接解压zip?
【发布时间】:2023-02-09 01:58:10
【问题描述】:

我想知道是否可以使用 Node 标准库中的 https.get() 下载 zip 并将其直接解压缩到子文件夹中。

我找到了许多先下载 zip 然后再解压缩的解决方案。但是有没有办法直接做呢?

这是我的尝试:

const zlib = require("node:zlib");
const fs = require("fs");
const { pipeline } = require("node:stream");
const https = require("https");

const DOWNLOAD_URL =
  "https://downloadserver.com/data.zip";
const unzip = zlib.createUnzip();
const output = fs.createWriteStream("folderToExtract");

https.get(DOWNLOAD_URL, (res) => {
  pipeline(res, unzip, output, (error) => {
    if (error) console.log(error);
  });
});

但我收到此错误:

错误:标头检查不正确
在 Zlib.zlibOnError [as onerror] (node:zlib:189:17) {
错误号:-3,
代码:'Z_DATA_ERROR'
}

我很好奇,这甚至可能吗?

【问题讨论】:

    标签: node.js zip zlib


    【解决方案1】:

    大多数解压缩器从结尾zip 文件,读取那里的中央目录并使用它来查找要解压缩的条目。这需要在开始时就可以访问整个 zip 文件。

    您需要的是一个流式解压缩器,它从 zip 文件的开头开始。你可以试试unzip-stream看看是否符合你的需求。

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      相关资源
      最近更新 更多