2015-04-12 11 views
17

Sto usando Co-Request per leggere il file zip dall'URL http e ho sotto il codice per leggere dal server ..Come convogliare la risposta a un file nel modulo Co-Request e NodeJs?

Il codice funziona già. Ma non so come scrivere la risposta Zip in un file.

Co-Request è in realtà wrapper per Request e ho trovato sotto il codice per pipe file to stream. Ma non sono sicuro di come scrivere lo stesso usando Co-Request con yield.

request.get('http://example.com/img.png').pipe(request.put('http://example.com/img.png')) 

Si prega di aiutarla a scrivere la risposta zip in un file utilizzando rendimento e co-request

+2

Partenza co-docs richiesta: https://github.com/request/request/blob/master/README.md È possibile reindirizzare la risposta a un'altra richiesta di streaming ('http://google.com/doodle.png') .pipe (fs.createWriteStream ('doodle.png')) –

+0

Non penso che sia possibile utilizzare i generatori per flussi di tubazioni. – Bergi

risposta

5

Penso richiedere tubo gergo dopo che i dati è stato emesso dalla risposta

richiesta uso invece di co richiesta, scrivere la promessa di raggiungere questo

var co = require('co'); 
var request = require('request'); 
var fs = require('fs'); 

var url = 'http://google.com/doodle.png'; 

var requestPipToFile = function(url, filepath) { 
    return new Promise(function(resolve, reject) { 
     try { 
      var stream = fs.createWriteStream(filepath); 
      stream.on('finish', function() { 
       console.log("pipe finish"); 
       return resolve(true); 
      }); 
      return request(url).pipe(stream); 
     } catch (e) { 
      return reject(e); 
     } 
    }); 
}; 

co(function*() { 
    var value = (yield requestPipToFile(url, './outfile')); 
    return value; 
}).then(function(value) { 
    return console.log(value); 
}).catch(function(err) { 
    return console.error(err); 
}); 
Problemi correlati