bigfile-node-server-client

bigfile-node-server-client

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

© 2021. All rights reserved.