2012-08-10 13 views
17

Pobieranie niektórych danych binarnych przez http. Mój kod wygląda następująco:node.js napisz odpowiedź http na strumień

var writeStream = fs.createWriteStream(fileName); 
request(url, function(err, res) { 
    res.socket.pipe(writeStream); 
}); 

teraz plik wyjściowy jest utworzona, ale rozmiar pliku wynosi 0. URL jest poprawny, choć, i sprawdzeniu, że wget.

Dzięki z góry & poważaniem

Odpowiedz

18

Wywołanie zwrotne dla http.request dostarcza tylko jeden argument, który stanowi odniesienie do response wniosku. Spróbuj

http.request(url, function(res) { 
    res.pipe(writeStream); 
}); 

Należy również pamiętać, że ClientResponse realizuje ReadableStream, więc należy użyć .pipe zamiast .socket.pipe.

6

Zakładam, że tutaj request pochodzi z biblioteki żądań mikeal, a nie z instancji http.request. W takim przypadku można po prostu wykonać tę czynność, pamiętając, że w celu debugowania zawsze można pobrać numer process.stdout.

+0

Dzięki. bardzo pomocna wskazówka na stdout –

3

var writeStream = fs.createReadStream(fileName); 
 
request(url, function(err, res) { 
 
    writeStream.pipe(res); 
 
    writeStream.on('end', function() { 
 
    //res.end({"status":"Completed"}); 
 
    }); 
 
});

+2

można tylko potoczyć czytelny do zapisywalnego, a nie odwrotnie, jak sugerujesz. – Salketer

Powiązane problemy