Как передать ответ на файл в Co-Request module & NodeJs?

Я использую Co-Request для чтения Zip файла с http-url, и у меня есть код ниже для чтения с сервера.

Код уже работает. Но я не знаю, как написать ответ Zip в файл.

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 на самом деле является оберткой для запроса, и я нашел ниже код для передачи файла в поток. Но не уверен, как писать то же самое с помощью Co-Request с выходом.

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

Пожалуйста, помогите, как написать ответ zip в файл, используя yield и co-request

Ответы

Ответ 1

Я думаю, что запрос can not pipe после того, как данные были отправлены из ответа

используйте запрос вместо совместного запроса, напишите обещание достичь этого

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