如何使用 NodeJS 即时解压缩托管的 tar 文件

杰基

我有以下 curl 命令可以正常工作...

curl -L -v "https://us-central1-npm.pkg.dev/my-project/npm-public/@my-scope/bucky-barnes/-/@my-scope/bucky-barnes-0.0。 1.tgz" -o 测试.tgz

这会输出一个我可以解压缩的 test.tgz 文件。

我正在尝试使用 NodeJS 自动执行此操作(注意-Lfor 重定向)。我想出了以下...

import express from "express";
import tar from "tar-stream";
import https from "https";
const app = express();
const PORT = 3000;

const request = function(req, res, url) {
  const reqSent = https.get(url, (response) => {
    if (response.statusCode == 302 || response.statusCode == 307) {
      const url = `https://${reqSent.host}${response.headers.location}`;
      console.log("Redirecting ", url);
      request(req, res, url);
    } else {
      console.log("Extracting ", reqSent.host);
      const extract = tar.extract()
      extract.on('entry', function(header, stream, next) {
        console.log(`The filename is ${header.name}`)
        stream.on('end', function() {
          next() // ready for next entry
        })
        stream.resume() // just auto drain the stream
      })
      extract.on("error", (e)=>{
        res.status(500).send(`Error decompressing ${e}`)
      })
      extract.on('finish', function() {
        res.send("Completed")
      })
      response.pipe(extract);
    };
  } ).on("error", (e)=>{
    console.log(`There was an error ${e}`);
    res.status(500).send("Failed");
  });
};

app.use((req, res)=>{
  request(req, res, "https://us-central1-npm.pkg.dev/my-project/npm-public/@my-scope/bucky-barnes/-/@my-scope/bucky-barnes-0.0.1.tgz")
});
app.listen(PORT, () => console.log(`Server listening on port: ${PORT}`));

当我运行它失败时说 tar-streamer 无法解析响应......

解压错误错误:数据意外结束

我错过了什么?为什么管道不适用于 tgz 文件?

克里斯蒂安弗里茨

tgz不是tar这是一个压缩的 tar 球。

来自https://www.npmjs.com/package/tar-stream

请注意,如果您有 .tar.gz,您仍然需要对数据进行压缩。我们建议将 gunzip-maybe 与此结合使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何重复解压缩tar本身内的tar文件

如何解压缩filename.tar.gz文件

如何解压缩xxx.js.tar文件

使用Apache Commons Compress解压缩tar文件

在tar中使用随机解压缩文件

如何使用nodejs上传zip文件并解压缩?

如何使用powershell将tar文件解压缩到特定文件夹

解压缩tar.gz文件

解压缩TAR文件,导致错误

如何使用一个命令分别解压缩许多tar文件?

如何使用bash脚本解压缩目录中的每种tar文件?

使用tar解压缩:-排除太贪心:如何仅排除根级文件?

如何在Java中压缩/解压缩tar.gz文件

使用一个命令解压缩.txz和.tar中压缩的文件

如何使用gunzip和tar将tar.gz文件解压缩到所需的特定目录?

在python中,如果解压缩tar.gz文件,如何获取或设置结果文件的名称

如何在Python或R中将TAR文件解压缩为TXT(读取CEL文件)

如何在.tar.gz中获取文件大小(原始文件大小)而不解压缩?

如何在UNIX中解压缩tar.bz文件?

Tar解压缩文件夹,如何更改其名称?

如何在解压缩之前检查/验证tar.gz文件

如何解压缩具有tar.zst的存档文件?

如何通过CHEF食谱解压缩tar.Z文件

如何解压缩Windows CMD中的“ .tar”类型文件?

如何在现有目录中解压缩.tar文件

为什么我不能使用tar解压缩.bz2文件?

使用tar -xvzf解压缩会导致文件夹的大小小于压缩文件的大小

Java:如何以低内存使用率解压缩文件(zip 或 tar.gz)?

错误解压缩后删除解压缩的tar.gz文件