大規模なオブジェクトは、不安定なネットワークまたはその他の例外のためにダウンロードに失敗する可能性があり、オブジェクト全体を再度ダウンロードする必要があります。 ただし、オブジェクトは複数回試行してもダウンロードに失敗することがあります。 そのため、OSS は再開可能ダウンロードを提供します。

再開可能ダウンロードを有効にするには、ダウンロードするオブジェクトを複数のパーツに分割して別々にダウンロードする必要があります。 すべてのパーツをダウンロードした後に、これらのパーツは完全なオブジェクトに結合されます。

再開可能なダウンロードを有効にするには、ossClient.downloadFile を使用します。 DownloadFileRequest には、以下のパラメーターが含まれています。

パラメーター 説明 必須またはオプション デフォルト値 設定方法
bucket バケットの名前を指定します。 必須項目 なし Constructor
key オブジェクトの名前を指定します。 必須項目 なし Constructor
downloadFile ローカルファイルを指定します。 オブジェクトをローカルファイルにダウンロードできます。 オプション オブジェクト名 Constructor or setDownloadFile
partSize 部品のサイズを指定します。 値は 1 バイトから 5 GB までです。 オプション オブジェクトのサイズ / 10000 setPartSize
taskNum 同時にダウンロードする必要があるパーツの数を指定します。 オプション 1 setTaskNum
enableCheckpoint 再開可能ダウンロードを有効にするかどうかを指定します。 オプション システム時間の使用 setEnableCheckpoint
checkpointFile パーツダウンロードの結果を記録するファイルを指定します。 再開可能ダウンロードを有効にするには、このパラメーターを設定する必要があります。 このファイルにはダウンロードの進行状況に関する情報が格納されています。 パーツのダウンロードに失敗した場合、ダウンロードは記録された進行状況に基づいて続行されます。 オブジェクトがローカルデバイスにダウンロードされると、このファイルは削除されます。 オプション downloadFile.ucp (DownloadFile と同じディレクトリを共有します) setCheckpointFile

再開可能ダウンロードを行うには、次のコードを実行します。

//This example uses the endpoint China East 1 (Hangzhou). Specify the actual endpoint based on your requirements.
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
//It is highly risky to log on with AccessKey of an Alibaba Cloud account because the account has permissions on all the APIs in OSS. We recommend that you log on as a RAM user to access APIs or perform routine operations and maintenance. To create a RAM account, log on to https://ram.console.aliyun.com.
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";

// Create an OSSClient instance.
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// Send a request to download 10 tasks simultaneously and start resumable download.
DownloadFileRequest downloadFileRequest = new DownloadFileRequest(bucketName, objectName);
downloadFileRequest.setDownloadFile("<yourDownloadFile>");
downloadFileRequest.setPartSize(1 * 1024 * 1024);
downloadFileRequest.setTaskNum(10);
downloadFileRequest.setEnableCheckpoint(true);
downloadFileRequest.setCheckpointFile("<yourCheckpointFile>");

// Download the object to your local file.
DownloadFileResult downloadRes = ossClient.downloadFile(downloadFileRequest);
// After the download succeeds, object meta is returned.
downloadRes.getObjectMetadata();

//Close your OSSClient.
ossClient.shutdown();