このトピックでは、シンプルなダウンロードを実行する方法について説明します。
使用上の注意
このトピックのサンプルコードを実行する前に、カスタムドメイン名または Security Token Service (STS) を使用する方法などを使用して、OSSClient インスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。
説明
バケットのリージョンは、初期化に指定されたエンドポイントのリージョンによって決定されます。
権限
デフォルトでは、Alibaba Cloud アカウントは、アカウント内のリソースに対するすべての権限を持っています。一方、Alibaba Cloud アカウントに関連付けられた RAM ユーザーおよび RAM ロールは、最初は権限を持ちません。RAM ユーザーまたはロールを使用してリソースを管理するには、RAM ポリシーまたはバケットポリシーを使用して必要な権限を付与する必要があります。
API | アクション | 説明 |
GetObject |
| オブジェクトをダウンロードする権限を付与します。 |
| オブジェクトバージョンを照会する権限を付与します。 この権限は、特定のバージョンのオブジェクトをダウンロードする場合に必要です。 | |
| Key Management Service (KMS) 復号を使用する権限を付与します。 この権限は、 x-oss-server-side-encryption ヘッダーを指定して暗号化したオブジェクトを部分的にダウンロードする場合に必要です。 |
例
オブジェクトは、ローカルファイルまたは NSData としてダウンロードできます。
OSSGetObjectRequest * request = [OSSGetObjectRequest new];
// バケット名を指定します。例:examplebucket。
request.bucketName = @"examplebucket";
// オブジェクトの完全なパスを指定します。例:exampledir/exampleobject.txt。完全なパスにバケット名を含めないでください。
request.objectKey = @"exampledir/exampleobject.txt";
// オプションフィールドを設定します。
request.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
// ダウンロード中のバイト数、ダウンロード済みのバイト数、ダウンロードする合計バイト数を指定します。
NSLog(@"%lld, %lld, %lld", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
};
// request.range = [[OSSRange alloc] initWithStart:0 withEnd:99]; // bytes=0-99。ダウンロード範囲をバイト 0 からバイト 99 までに指定します。
// request.downloadToFileURL = [NSURL fileURLWithPath:@"<filepath>"]; // オブジェクトをファイルに直接ダウンロードする必要がある場合は、ファイルのパスを指定します。
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];