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