在不使用文本文件

时间:2018-06-01 07:54:09

标签: node.js

有没有办法下载然后在控制台日志中显示gzip文件而无需在文本文件中写入内容。

 request(URL,  (err, res, body) => {
            console.log(body);
          });

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用流。您可以简单地pipe request to zlib(标准模块)对其进行解压缩。然后将其传送到process.stdout,让它像这样登录到控制台:



const request = require('request');

const zlib = require('zlib');
const gunzip = zlib.createGunzip();

request('http://example.com/someFile.txt.gz').pipe(gunzip).pipe(process.stdout);




注意:如果文件很大,则会在下载和处理数据时将其记录在块中。

如果您想等到所有数据都下载完毕后再登录,可以使用stream-to-promise



const gunzip = zlib.createGunzip();
const streamToPromise = require('stream-to-promise');

const unzipStream = request('http://example.com/someFile.txt.gz').pipe(gunzip);

streamToPromise(unzipStream)
    // `data` is a buffer here, so you need to call .toString() to log it
    .then(data => console.log(data.toString()))
    .catch(err => console.error(err));