2017-09-05 8 views
2

request.jsを使用してfile.csv.gzを取得し、解析して処理する前に解凍しようとしています。私は私のコードは、このパイプ構文を使用してストリーミング応答を解凍する

response 
.pipe(zlib.createGunzip()) 
.pipe(split()) 
.pipe(process()) 

に見えるようにしたい知っている

しかし、私はパイプべき正しい形式で私の応答オブジェクトを取得するために苦労しています。私は現在、やって応答をストリーミングしようとしています。

const request = require('request'); 

const headers = { 
    'accept-encoding':'gzip' 
} 

module.exports.getCSV = (url) => { 
    return request({url, headers, gzip:true}); 
} 

不完全なオブジェクトを解凍しようとしていることを意味するエラーが表示されます。

私も私が達成したいものを行うには、おそらく不可能であることを考えていますし、代わりに私が

+0

私たちは、ファイルまたはリンクを参照することが可能ですか? – turmuka

答えて

0

receive.js

を処理するためにそれを解析しようとする前に、完全にファイルをダウンロードする必要があります
const http = require('http'); 
const fs = require('fs'); 
const zlib = require('zlib'); 

const server = http.createServer((req, res) => { 
    const filename = req.headers.filename; 
    console.log('File request received: ' + filename); 
    req 
    .pipe(zlib.createGunzip()) 
    .pipe(fs.createWriteStream(filename)) 
    .on('finish',() => { 
     res.writeHead(201, {'Content-Type': 'text/plain'}); 
     res.end('Complete\n'); 
     console.log(`File saved: ${filename}`); 
    }); 
}); 
server.listen(3000,() => console.log('Listening')); 

send.js

const fs = require('fs'); 
const zlib = require('zlib'); 
const http = require('http'); 
const path = require('path'); 
const file = 'myfile.txt'; //Put your file here 
const server = 'localhost'; //Put the server here 
const options = { 
    hostname: server, 
    port: 3000, 
    path: '/', 
    method: 'PUT', 
    headers: { 
     filename: path.basename(file), 
     'Content-Type': 'application/octet-stream', 
     'Content-Encoding': 'gzip' 
     } 
    }; 

const req = http.request(options, res => { 
    console.log('Server response: ' + res.statusCode); 
}); 
fs.createReadStream(file) 
.pipe(zlib.createGzip()) 
.pipe(req) 
.on('finish',() => { 
    console.log('File successfully sent'); 
    }); 
関連する問題