【问题标题】:Node Stream and Process Zipped Contents via FTP节点通过 FTP 流式传输和处理压缩内容
【发布时间】:2016-05-11 22:08:29
【问题描述】:

我的服务器上有一个 10gb+ 的大压缩文件 我无法将压缩文件保存在本地计算机上。 我想将压缩后的内容流式传输到我的服务器(通过 FTP),逐块解压缩内容,并处理每个块/行。

基本上我的挑战和问题是: 我可以使用压缩文件的每个流块并独立解压缩它们吗?还是我必须下载整个文件?是否有处理此问题的节点库?

【问题讨论】:

    标签: javascript node.js ftp


    【解决方案1】:

    如果您可以将压缩文件更改为 gzip 文件,则可以。根据我的阅读,Zip 文件是不可能的。如此处所述:Java: Stream Contents of Zipfile via HTTP

    所以我决定为此考虑使用 GZipped 文件,使用 GZip 似乎相当容易。

    【讨论】:

    • 太棒了。这正是我所需要的。
    【解决方案2】:

    如果它只是一个没有zip字典的压缩文件,也许你可以试试这个

      fs.createReadStream(`${craneProjectDir}/tree`)
      .pipe(zlib.createUnzip())
      .pipe(fs.createWriteStream('myfile'))
    

    https://nodejs.org/api/zlib.html#zlib_zlib_createunzip_options

    如果它有一个字典,这是一个压缩文件的常规,你可以试试这个

    https://github.com/antelle/node-stream-zip

    由于例子很大,我邀请您查看readme

    要通过 FTP 读取/写入文件,我邀请您使用来自优秀 mscdex 的库

    https://github.com/mscdex/node-ftp

      var Client = require('ftp');
      var fs = require('fs');
    
      var c = new Client();
      c.on('ready', function() {
        c.get('foo.txt', function(err, stream) {
          if (err) throw err;
          stream.once('close', function() { c.end(); });
          stream.pipe(fs.createWriteStream('foo.local-copy.txt'));
        });
      });
      // connect to localhost:21 as anonymous
      c.connect();
    

    是的,这应该是可行的。

    【讨论】:

    • 不幸的是,我需要从外部服务器流式传输内容。这对那里没有帮助。 :(但仍然是有用的信息:)
    猜你喜欢
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2022-11-10
    • 2016-10-11
    • 2015-10-24
    相关资源
    最近更新 更多