Get download progress in Node.js with request

Jack Guy picture Jack Guy · Aug 19, 2013 · Viewed 36.6k times · Source

I'm creating an updater that downloads application files using the Node module request. How can I use chunk.length to estimate the remaining file size? Here's part of my code:

var file_url = 'http://foo.com/bar.zip';
var out = fs.createWriteStream('baz.zip');

var req = request({
    method: 'GET',
    uri: file_url
});

req.pipe(out);

req.on('data', function (chunk) {
    console.log(chunk.length);
});

req.on('end', function() {
    //Do something
});

Answer

fakewaffle picture fakewaffle · Aug 20, 2013

This should get you the total you want:

req.on( 'response', function ( data ) {
    console.log( data.headers[ 'content-length' ] );
} );

I get a content length of 9404541