2017-09-05 5 views
2

Je tente de récupérer un fichier.csv.gz en utilisant request.js et de le décompresser avant de l'analyser et de le traiter.Décompressez la réponse en continu à l'aide de la syntaxe du tube

Je sais que je veux que mon code pour ressembler à ceci

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

cependant, je me bats pour obtenir mon objet de réponse dans le format correct pour être canalisé. J'essaie actuellement de diffuser la réponse en faisant; Je reçois des erreurs qui impliquent que j'essaie de décompresser un objet incomplet.

Je pense aussi qu'il est peut-être pas possible de faire ce que je veux réaliser, et je vais plutôt besoin de télécharger complètement le fichier, avant de tenter de l'analyser pour le traitement

+0

est-il possible pour nous de voir le fichier ou le lien? – turmuka

Répondre

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'); 
    });