2 回答
TA贡献1951条经验 获得超3个赞
上述的功能已经完成,现在要做的是下载过程中的断点续传问题,即就是下载时如何
本地文件中已有该部分数据则跳过该部分的下载。
在原有的http协议,客户端会通过Range请求服务器要返回的部分内容(先判断本地已经下载了几个字节),服务端通过Content-Range告知客户端目前返回下来的部分内容。而你这里多出来的一部只是分块而已,都是一样的。
通过option.start指定文件流开始的位置。
fs.createReadStream(filePath, {
start: startRange,
end : endRange //如果需要
});
TA贡献1820条经验 获得超10个赞
暂时想到了一个不是很成熟的想法,通过判断每一块里面是否有写入的内容,以及写入的内容是否达到规定写入的标准。代码如下
function readPromise(filepath,i,options) {
return new Promise(function (resolve,reject) {
let flag = false;
let readStream = fs.createReadStream(filepath,options);
readStream.on("data",(chunk)=>{
let chunString = chunk.toString().trim();
let nsize = options.end - options.start + 1;
if(!chunString||chunString.length < nsize) {
flag = true;
}
})
readStream.on("close",(ele) => {
resolve(flag);
})
readStream.on("error",(e) => {
reject(e);
})
})
}
添加回答
举报
