node.js,获取 zip 文件并将其解压到 RAM

标签 node.js node.js-stream

我需要帮助,如何获取 zip 文件并将其解压缩到内存,或者将其写入硬盘。

示例网址

var http = require("http");
var fs = require("fs");
var url = "http://www.caltrain.com/Assets/GTFS/caltrain/Caltrain-GTFS.zip"
var file = fs.createWriteStream("./file.zip");

http.get(url, (res) => {
    var test = res.pipe(file);
    console.log("it's finished")
    console.log(test)
})

我不确定 asycnc-api 是如何工作的,createWriteStream 是否等待整个缓冲区?以及如何将其写入磁盘?

//经过数小时的谷歌搜索后,我找到了更好的解决方案,How to download and unzip a zip file in memory in NodeJs?

最佳答案

您可以使用提到的软件包:request & unzip

# download and save the file to filesystem
request('http://google.com/doodle.png').pipe(fs.createWriteStream('file.zip'))

# extract it to `output/path`
fs.createReadStream('file.zip').pipe(unzip.Extract({ path: 'output/path' }));

或者,如果您不需要 zip 文件,可以直接从内存中提取它:

request('http://google.com/doodle.png').pipe(unzip.Extract({ path: 'output/path' }));

关于node.js,获取 zip 文件并将其解压到 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39711719/

相关文章:

node.js - 通过管道传输同一流两次会产生无限循环

json - 如何使用 node.js 通过 mqtt 发布从 URL 接收的实时流式 json 数据

javascript - 作为构建过程的一部分,从 Node/Express View 渲染静态 HTML 文件

regex - Node js Express 框架 - 正则表达式不起作用

node.js - 将 backbone.js 与 socket.io 一起使用

Node.js PassThrough 流没有正确关闭?

node.js - "readable"事件发生两次

node.js - 在带有路由的 Express 应用程序中重用 MongoClient

node.js - $set 不适用于 mongodb 更新

使用 Oboe.js、MongoDB 和 Express.js 进行 JSON 流式传输