大檔案上傳實現總結
阿新 • • 發佈:2022-01-06
大檔案上傳實現思路
大檔案上傳實現方式
前端切片,分片上傳,後端接收完切片後合併
判斷切片上傳完成
a.每個切片都攜帶切片數量最大值,後端在接收到這個數量切片時合併
b.前端判斷上傳完成後傳送合併請求
後臺合併切片
a.切片攜帶順序編號,後臺按順序號排列後合併
b.切片攜帶size資訊,後臺可不按順序合併,也可多執行緒合併
上傳進度判斷
a.前端監聽
b.後端使用webSocket傳送進度資訊給前端
斷點續傳
a.前端使用localstorage記錄已上傳的切片,缺陷是換了瀏覽器就不再有效
b.後端儲存已上傳的切片的hash或md5(hash應該使用檔案內容生成,不應使用檔名等易變的元素;檔案過大,生成hash可能需要時間過程,可使用非同步的方式),前端上傳前從後臺獲取已上傳的切片
檔案秒傳
對比檔案的hash,如果相同則返回上傳成功
暫停上傳
暫停其實是取消整個切片的上傳
恢復上傳
需要向後端請求已上傳的切片資訊,跳過這些切片
切片上傳失敗的處理
hash或md5驗證失敗,不一致重傳
根據切片數判斷切片缺失
前端切片原因
http請求不限制檔案大小,但外部可能有限制,比如閘道器、服務端設定post請求http頭的檔案長度
前端、閘道器和服務端限制檔案大小提示
分散式服務多個分配上傳請求要打到同一個伺服器
pod親和性
nginx的ip_hash
擴充套件
多切片、多檔案併發上傳