大きなオブジェクトをダウンロードする必要がある場合、またはダウンロードの完了に長い時間がかかる場合は、ストリーミングダウンロードを実行して、オブジェクトを増分単位でダウンロードできます。
OSS SDK for iOSは、ストリーミングダウンロードAPIを提供していません。 代わりに、NSURLSession
ライブラリのdidRecieveData
関数に似たマルチパートコールバック機能を提供します。 マルチパートコールバックが設定されている場合、ダウンロード結果に実際のデータは含まれません。
例
次のコードは、ストリーミングダウンロードを使用してオブジェクトをダウンロードする方法の例を示しています。
OSSGetObjectRequest * request = [OSSGetObjectRequest new];
// バケットの名前を指定します。 例: examplebucket.
request.bucketName = @ "examplebucket";
// オブジェクトのフルパスを指定します。 フルパスにバケット名を含めることはできません。 例: exampledir/exampleobject.txt。
request.objectKey = @ "exampledir/exampleobject.txt";
// マルチパートコールバック関数を設定します。
request.onRecieveData = ^(NSData * data) {
NSLog(@ "Recieve data, length: % ld", [data length]);
};
OSSTask * getTask = [client getObject:request];
[getTask continueWithBlock:^ id(OSSTask * task) {
if (!task.error) {
NSLog(@ "オブジェクトのダウンロード成功!");
} else {
NSLog(@ "オブジェクトのダウンロードに失敗、エラー: % @" 、task.error);
}
nilを返します。}];
// [getTask waitUntilFinished];
// [リクエストキャンセル];
参考資料
ストリーミングダウンロードを実行するために呼び出すことができるAPI操作の詳細については、「GetObject」をご参照ください。