1. 程式人生 > >node之斷點續傳

node之斷點續傳

最近做專案需要做斷點續傳

專案技術框架 electron-vue

斷點運用技術 node.js http協議 oss物件儲存

需下載檔案儲存在阿里雲OSS上

下載用的node.js request 與 fs 模組

第一步:

通過node request模組發起請求

header:引數Range 決定下載區間

注:oss許可權非公共讀寫的話需要加上oss的許可權驗證,我測試直接oss許可權設定為公共讀寫(不安全)了

第二部:

通過node fs檔案模組完成檔案讀寫

fs.createWriteStream建立檔案寫入流

start 選項,用於寫入資料到檔案指定位置

flags:如果是修改檔案而不是覆蓋它,則 flags

 模式需為 r+ 模式而不是預設的 w 模式。

注:如果修改檔案flags值沒有設定為r+,檔案會有問題

req.pipe(stream):通過檔案流將請求到的資料寫入本地資料夾

若需要暫停下載操作可通過手動結束request請求 req.abort() 然後需要記住當前已下載的位元組receivedBytes也就是range引數裡的receivedBytes

繼續下載時重新發起request請求,然後將上次已經接收的總檔案位元組傳入到range 這樣就實現了下載暫停功能

本人也是首次用node來做斷點下載,有不足之處請指出。