Node断点下载

 

function downloadFile(url,savefile){

    //如果文件已存在,获取长度
	 var receivedBytes=0; 
	 if(fs.existsSync(savefile)){
		 var stats = fs.statSync(savefile);
		var receivedBytes=stats.size; 
		console.log("续传");
	 }
	 
	//发送请求时,增加一个range头
    var opts={
		headers:{'Range':`bytes=${receivedBytes}-`}
	}
	console.log(opts);
	var req = https.request(url,opts);
	 // 通过flag指定文件是新建还是追加
	var file = fs.createWriteStream(savefile,{
		start:receivedBytes,
		flags:receivedBytes>0?'a+':'w'
	});
    //收到请求的回复后
	req.on('response', function(res){
		var len = parseInt(res.headers['content-length'], 10);//当前内容总长度
		var rangelen = res.headers['content-range'];//获取内容的字节范围
        res.pipe(file);
		var bar = new ProgressBar(savefile+' downloading [:bar] :rate/bps :percent :etas', {
			complete: '=',
			incomplete: ' ',
			width: 20,
			total: len
		});
        //回复数据流收到数据,更新进度条
		res.on('data', function (chunk) {
			bar.tick(chunk.length);
		  });
        //回复数据流结束
		res.on('end', function () {
			console.log('\n');
		});

	})
	req.end();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值