斷點續傳是一種在網絡傳輸中斷后,能夠從中斷的位置繼續傳輸的技術。它可以有效地避免因為網絡不穩定、服務器故障、用戶操作等原因導致的傳輸失敗,節省了用戶的時間和流量,提高了傳輸的效率和可靠性。斷點續傳在很多場景中都有廣泛的應用,比如文件下載、視頻播放、在線更新、遠程備份等。
一、斷點續傳的原理
顧名思義就是斷點和續傳
什么是斷點?
在文件上傳過程中,將一個要上傳的文件分成N塊,然后使用多線程并發多塊上傳,因為某種原因導致上傳被中斷或暫停,此時中斷或暫停的位置就成為斷點。
什么是續傳?
意思是指從中斷的位置繼續上傳剩下的部分文件,而不是從頭開始上傳。
二、實現流程步驟
方案一,常規步驟
1、將需要上傳的文件按照一定的分割規則,分割成相同大小的數據塊;
2、初始化一個分片上傳任務,返回本次分片上傳唯一標識;
3、按照一定的策略(串行或并行)發送各個分片數據塊;
4、發送完成后,服務端根據判斷數據上傳是否完整,如果完整,則進行數據塊合成得到原始文件。
方案二、本文實現的步驟
1、前端(客戶端)需要根據固定大小對文件進行分片,請求后端(服務端)時要帶上分片序號和大小
2、服務端創建conf文件用來記錄分塊位置,conf文件長度為總分片數,每上傳一個分塊即向conf文件中寫入一個127,那么沒上傳的位置就是默認的0,已上傳的就是Byte.MAX_VALUE 127(這步是實現斷點續傳和秒傳的核心步驟)
3、服務器按照請求數據中給的分片序號和每片分塊大小(分片大小是固定且一樣的)算出開始位置,與讀取到的文件片段數據,寫入文件。