2012-08-10 19 views
17

estoy obteniendo algunos datos binarios a través de http. Mi código es el siguiente:node.js escribir la respuesta http a la secuencia

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

ahora se crea el archivo de salida, pero el tamaño del archivo es 0. La web es correcta, sin embargo, comprobé que con wget.

Gracias de antemano & mejores deseos

Respuesta

18

La llamada de retorno para http.request que alimenta un solo argumento, que es una referencia a la response de la solicitud. Trate

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

También tenga en cuenta que el ClientResponse implementa ReadableStream, por lo que debe utilizar en lugar de .pipe.socket.pipe.

6

Supongo que aquí request es de la biblioteca de solicitudes de Mike en lugar de ser una instancia de http.request. En ese caso, simplemente puede hacer request(url).pipe(writeStream);

Recuerde que para fines de depuración, siempre puede conectar a process.stdout.

+0

Gracias. sugerencia muy útil en la stdout –

3

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

+2

solo se puede convertir una página legible en escritura, no lo contrario como sugiere. – Salketer

Cuestiones relacionadas