Frage Wie wird die Antwort auf eine Datei im Co-Request-Modul & NodeJs weitergeleitet?


ich benutze Co-Anfrage  Zip-Datei von http URL zu lesen, und ich habe unterhalb Code vom Server zu lesen ..

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

var co = require( "co" );
var request = require( "co-request" );
        var options = {
                        url: "http://www.example.com/sample.zip",
                        headers: {
                            'Token': Appconfig.Affiliate_Token,
                            'Affiliate-Id' : Appconfig.Affiliate_Id
                        }
                    }
                    console.log( "Downloading : zip file"  );
                    var j = yield request( options );

Co-Request ist eigentlich Wrapper für Request und ich habe unten den Code gefunden, um die Datei zu streamen. 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 man mit Hilfe von Yield und Co-Request Antwort-Zip in eine Datei schreibt


17
2018-04-12 04:51


Ursprung


Antworten:


Ich denke, dass die Anfrage nach dem Senden von Daten aus der Antwort nicht möglich ist

Verwenden Sie Anfrage statt Co-Anfrage, schreiben Sie ein Versprechen, um dies zu erreichen

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

5
2018-04-21 09:43