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();
}
Node断点下载
猜你喜欢
转载自blog.csdn.net/guo1wu3shi4/article/details/104228246
今日推荐
周排行