bigfile-node-server-client
Projects | | Links:
Download big file with progress bar in Nodejs
// Working code
var fs = require('fs');
var request = require('request');
var progress = require('request-progress');
var url = 'http://localhost:4181';
var filename = 's.zip';
var pre = '----';
downloadManager = function(url,filename){
progress(request(url), {
throttle:500
}) .on('progress', function (state) {
process.stdout.write(pre+''+ (Math.round(state.percent*100))+"%");
})
.on('error', function (err) {
console.log('error :( '+err);
})
.on('end', function () {
console.log(pre+'100% \n Download Completed');
})
.pipe(fs.createWriteStream(filename));
};
downloadManager(url,filename);
File Server Code is below
var http = require("http");
var fs = require("fs");
var location = "base/RealBigFile.zip";
var PORT = 4181;
var fileServerInit = function (loc) {
var serv = http.createServer(function (req, res) {
var stat = fs.statSync(loc);
res.writeHeader(200, {
"Content-Length": stat.size
});
var fReadStream = fs.createReadStream(loc);
fReadStream.on('data', function (chunk) {
if (!res.write(chunk)) {
fReadStream.pause();
}
});
fReadStream.on('end', function () {
console.log("File is uploaded")
serv.close();
});
res.on("drain", function () {
fReadStream.resume();
});
});
console.log("File is ready "+loc+" Listening for incoming connection");
serv.listen(PORT);
}
fileServerInit(location);