1. 程式人生 > 其它 >大檔案上傳實現總結

大檔案上傳實現總結

大檔案上傳實現思路


大檔案上傳實現方式
  前端切片,分片上傳,後端接收完切片後合併

判斷切片上傳完成
  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


擴充套件

  多切片、多檔案併發上傳