2015-04-12 8 views
17

Ich verwende Co-Request, um Zip-Datei von http URL zu lesen, und ich habe unter Code vom Server zu lesen.So leiten Sie die Antwort auf eine Datei im Co-Request-Modul & NodeJs?

Der Code funktioniert bereits. Aber ich weiß nicht, wie man die Antwort Zip in eine Datei schreibt.

Co-Request ist Wrapper für Request und ich habe unten Code zu Pipe-Datei zu Stream gefunden. Aber nicht sicher, wie man dasselbe mit Co-Request mit Ausbeute schreibt.

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

Bitte helfen Sie, wie Antwort zip in eine Datei mit Ertrag und Co-Anfrage

+2

prüfen zu erreichen out: https://github.com/request/request/blob/master/README.md Sie können Antwort auf einen anderen Stream pipe Anfrage ('http://google.com/doodle.png') .pipe (fs.createWriteStream ('doodle.png')) –

+0

Ich glaube nicht, dass Sie Generatoren für verwenden können Rohrleitungen. – Bergi

Antwort

5

Ich denke, fordern kippt Rohr zu schreiben, nachdem Daten aus der Antwort

Verwendung Anfrage statt Co- emittiert wurden Anfrage, schreiben Sie eine Zusage dieses Co-Anfrage docs

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); 
}); 
Verwandte Themen