斷點續傳上傳__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲
適用場景
當使用簡單上傳(PutObject)功能來上傳較大的文件到OSS的時候,如果上傳的過程中出現了網絡錯誤,那麼此次上傳失敗。重試必須從文件起始位置上傳。針對這種情況,OSS提供了分片上傳(Multipart Upload)來達到斷點續傳的效果。顧名思義,分片上傳就是將要上傳的文件分成多個數據塊(OSS裏又稱之為Part)來分別上傳,上傳完成之後再調用OSS的接口將這些Part組合成一個Object。
相對於其他的上傳方式,分片上傳適用於以下場景:
- 惡劣的網絡環境。如手機端,當出現上傳失敗的時候,可以對失敗的Part進行獨立的重試,而不需要重新上傳其他的Part。
- 斷點續傳。中途暫停之後,可以從上次上傳完成的Part的位置繼續上傳。
- 加速上傳。要上傳到OSS的本地文件很大的時候,可以並行上傳多個Part以加快上傳。
- 流式上傳。可以在需要上傳的文件大小還不確定的情況下開始上傳。這種場景在視頻監控等行業應用中比較常見。
基本流程
一般的流程如下:
- 將要上傳的文件按照一定的大小分片。
- 初始化一個分片上傳任務(InitiateMultipartUpload)。
- 逐個或並行上傳分片(UploadPart)。
- 完成上傳(CompleteMultipartUpload)。
在這個過程中有些要注意的地方:
- 除了最後一塊Part,其他Part的大小不能小於100KB,否則會導致在調用CompleteMultipartUpload接口的時候失敗。
- 要上傳的文件切分成Part之後,文件順序是通過上傳過程中指定的partNumber來確定的,實際執行中並沒有順序要求,因此可以實現並發上傳。具體的並發個數並不是越多速度越快,要結合用戶自身的網絡情況和設備負載綜合考慮。
- 默認情況下,已經上傳但還沒有調用CompleteMultipartUpload的Part是不會自動回收的,因此如果要終止上傳並刪除占用的空間請調用AbortMultipartUpload。如果需要自動回收上傳的Part,請參考Object生命周期管理。
斷點續傳
因為已經上傳的Part的生命周期是永久的,因此很容易可以實現斷點續傳的功能。
在使用分片上傳的過程中,如果係統意外崩潰,可以在重啟的時候通過ListMultipartUploads和ListParts兩個接口來獲取某個Object上的所有的分片上傳任務和每個分片上傳任務中上傳成功的Part列表。通過這樣就可以從最後一塊成功上傳的Part開始繼續上傳,從而達到斷點續傳的效果。暫停和恢複上傳實現原理也是一樣的。
斷點續傳功能在移動設備和大文件上傳中尤其有價值。
上傳限製
- 大小限製:在這種上傳方式下,Object的大小是由Part來決定的。最大支持10000塊Part,每塊最小100KB(最後一塊可以比100KB小),最大5GB。
- 命名限製
- 使用UTF-8編碼
- 長度必須在1-1023字節之間
- 不能以“/”或者“”字符開頭
上傳的安全及授權
為了防止第三方往開發者的Bucket未經授權上傳,OSS提供了Bucket和Object級別的訪問權限控製,詳細解釋見訪問控製。為了授權給第三方上傳,OSS除了Bucket和Object級別的訪問權限外,還提供了賬號級別的授權,見上傳安全之授權第三方。
上傳後續操作
- 在文件上傳到OSS上後,開發者可以使用上傳後回調來向指定的應用服務器發起回調請求,進行下一步操作。
- 如果上傳的是圖片,可以使用圖片服務進行後續處理。
- 如果上傳的是音頻或者視頻文件,可以使用媒體轉碼進行後續處理。
功能使用參考:
- API:
- SDK:Java SDK-MultipartUpload 中的分片上傳
最佳實踐
相關參考鏈接:
最後更新:2016-11-23 16:04:09
上一篇:
表單上傳__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲
下一篇:
追加上傳__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲
Job(作業)__產品概念_產品簡介_數據集成-阿裏雲
API對接__用戶指南_推薦引擎-阿裏雲
接口說明__API使用手冊_歸檔存儲-阿裏雲
彈性Web托管如何上傳網站程序?__產品相關問題_使用問題_彈性 Web 托管-阿裏雲
資源操作__常用命令_基本介紹_大數據計算服務-阿裏雲
SQL 與 NoSQL 的對比__從 SQL 到 NoSQL_快速入門_表格存儲-阿裏雲
技術架構__產品簡介_業務實時監控服務 ARMS-阿裏雲
創建數據庫與表__快速入門_雲數據庫 PetaData-阿裏雲
Taskitem數據類型__數據類型_API 手冊_CDN-阿裏雲
Logtail-配置__Getting-Started_日誌服務-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲