2 回答

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
上述的功能已經(jīng)完成,現(xiàn)在要做的是下載過程中的斷點(diǎn)續(xù)傳問題,即就是下載時(shí)如何
本地文件中已有該部分?jǐn)?shù)據(jù)則跳過該部分的下載。
在原有的http
協(xié)議,客戶端會通過Range
請求服務(wù)器要返回的部分內(nèi)容(先判斷本地已經(jīng)下載了幾個(gè)字節(jié)),服務(wù)端通過Content-Range
告知客戶端目前返回下來的部分內(nèi)容。而你這里多出來的一部只是分塊而已,都是一樣的。
通過option.start
指定文件流開始的位置。
fs.createReadStream(filePath, {
start: startRange,
end : endRange //如果需要
});

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
暫時(shí)想到了一個(gè)不是很成熟的想法,通過判斷每一塊里面是否有寫入的內(nèi)容,以及寫入的內(nèi)容是否達(dá)到規(guī)定寫入的標(biāo)準(zhǔn)。代碼如下
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);
})
})
}
添加回答
舉報(bào)