全部產品
Search
文件中心

Object Storage Service:斷點續傳下載

更新時間:Aug 30, 2018

斷點續傳下載

當下載大檔案時,如果網路不穩定或者程式異常退出,會導致下載失敗,甚至重試多次仍無法完成下載。為此OSS提供了斷點續傳下載功能。

斷點續傳下載將需要下載的檔案分成若干個分區分別下載,所有分區都下載完成後,將所有分區合并成完整的檔案。

您可以通過ossClient.downloadFile方法實現斷點續傳下載。此方法的DownloadFileRequest請求包含以下參數:

參數 描述 是否必需 預設值 如何設定
bucket 儲存空間名稱。 通過構造方法設定。
key OSS檔案名稱。 通過構造方法設定。
downloadFile 本地檔案。OSS檔案將下載到該檔案。 OSS檔案名稱 通過構造方法或setDownloadFile設定。
partSize 分區大小,取值範圍為1B~5GB。 檔案大小/10000 通過setPartSize設定。
taskNum 分區下載的並發數。 1 通過setTaskNum設定。
enableCheckpoint 是否開啟斷點續傳功能。 關閉 通過setEnableCheckpoint設定。
checkpointFile 記錄本地分區下載結果的檔案。開啟斷點續傳功能時需要設定此參數。下載過程中的進度資訊會保存在該檔案中,如果某一分區下載失敗,再次下載時會根據檔案中記錄的點繼續下載。下載完成後,該檔案會被刪除。 downloadFile.ucp(與DownloadFile同目錄)。 通過setCheckpointFile設定。

以下代碼用於斷點續傳下載:

  1. // Endpoint以杭州為例,其它Region請按實際情況填寫。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. String bucketName = "<yourBucketName>";
  7. String objectName = "<yourObjectName>";
  8. // 建立OSSClient執行個體。
  9. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  10. // 下載請求,10個任務並發下載,啟動斷點續傳。
  11. DownloadFileRequest downloadFileRequest = new DownloadFileRequest(bucketName, objectName);
  12. downloadFileRequest.setDownloadFile("<yourDownloadFile>");
  13. downloadFileRequest.setPartSize(1 * 1024 * 1024);
  14. downloadFileRequest.setTaskNum(10);
  15. downloadFileRequest.setEnableCheckpoint(true);
  16. downloadFileRequest.setCheckpointFile("<yourCheckpointFile>");
  17. // 下載檔案。
  18. DownloadFileResult downloadRes = ossClient.downloadFile(downloadFileRequest);
  19. // 下載成功時,會返迴文件元資訊。
  20. downloadRes.getObjectMeta();
  21. // 關閉OSSClient。
  22. ossClient.shutdown();