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);
})
})
}
添加回答
舉報