ファイルの一部のみが必要な場合は、範囲のダウンロードを使用して、データの特定の部分を取得できます。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成します。詳細については、「初期化 (iOS SDK)」をご参照ください。
バケットのリージョンは、初期化時に指定されたエンドポイントのリージョンによって決まります。
権限
デフォルトでは、Alibaba Cloud アカウントはすべての権限を持っています。Alibaba Cloud アカウント下の RAM ユーザーまたは RAM ロールは、デフォルトでは何の権限も持っていません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
GetObject |
| オブジェクトをダウンロードします。 |
| オブジェクトをダウンロードする際に、versionId を通じてオブジェクトのバージョンを指定する場合、この権限が必要です。 | |
| オブジェクトをダウンロードする際に、オブジェクトのメタデータに X-Oss-Server-Side-Encryption: KMS が含まれている場合、この権限が必要です。 |
範囲のダウンロードは、ラージオブジェクトのダウンロードに適しています。リクエストヘッダーで Range パラメーターが指定されている場合、応答にはオブジェクト全体の長さと返されるデータの範囲が含まれます。
使用例
次のコードは、範囲のダウンロードを実行する方法の例を示しています。
OSSGetObjectRequest * request = [OSSGetObjectRequest new];
// バケット名を指定します。例:examplebucket。
request.bucketName = @"examplebucket";
// オブジェクトの完全なパスを指定します。バケット名は含めないでください。例:exampledir/exampleobject.txt。
request.objectKey = @"exampledir/exampleobject.txt";
request.range = [[OSSRange alloc] initWithStart:1 withEnd:99]; // bytes=1-99
// request.range = [[OSSRange alloc] initWithStart:-1 withEnd:99]; // bytes=-99
// request.range = [[OSSRange alloc] initWithStart:10 withEnd:-1]; // bytes=10-
request.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
NSLog(@"%lld, %lld, %lld", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
};
OSSTask * getTask = [client getObject:request];
[getTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"download object success!");
OSSGetObjectResult * getResult = task.result;
NSLog(@"download result: %@", getResult.downloadedData);
} else {
NSLog(@"download object failed, error: %@" ,task.error);
}
return nil;
}];
// [getTask waitUntilFinished];
// [request cancel];関連ドキュメント
範囲のダウンロードの API 操作の詳細については、「GetObject」をご参照ください。
OSSClient インスタンスの初期化方法の詳細については、「初期化 (iOS SDK)」をご参照ください。