Http實現大檔案分段下載
阿新 • • 發佈:2019-01-25
http不可能直接讀取很大的檔案一定會導致oom,而且傳送很容易失敗,一旦失敗又要重新開始傳輸,這樣體驗可想而知,最後我們採用斷點續傳的方式來實現,
整個過程是分3步來完成的
功能描述:
上傳視訊metadata資訊,metadata資訊包括:md5、檔案容量大小、檔名稱。
返回視訊的上傳資訊: 如果正在上傳,返回當前檔案的進度;如果上傳成功,返回檔案的儲存url,視訊截圖的尺寸、視訊時長
功能描述:
獲取檔案的上傳資訊,如果正在上傳返回當前檔案的進度; 如果上傳成功返回檔案的儲存url,如果是視訊返回視訊時長,和截圖.
功能描述:
分塊順序上傳檔案,最終返回視訊時長、視訊縮圖等資訊(由於使用者錄製視訊較大,客戶端播放很慢、卡,最終通過伺服器非同步壓縮處理的方式解決體驗)
4、publish
功能描述:
將返回的視訊資訊傳送到邏輯伺服器完成釋出
後面會考慮將這塊的內容封裝成一個上傳元件,最後上客戶端斷點上傳關鍵程式碼,整體流程就不貼出來了。
public class FileUtils {
public static byte[] getBlock(long offset, File file, int blockSize) {byte[] result = new byte[blockSize];RandomAccessFile accessFile = null;try {accessFile = new RandomAccessFile(file, "r");
}