2017-09-05 9 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'); 
    });