全部產品
Search
文件中心

Object Storage Service:流式下載(iOS SDK)

更新時間:Nov 29, 2025

如果要下載的檔案太大,或者一次性下載耗時太長,您可以通過流式下載,一次處理部分內容,直到完成檔案的下載。

注意事項

  • 使用本文樣本前您需要先通過自訂網域名、STS等方式建立OSSClient,具體請參見初始化(iOS SDK)

    說明

    所建立儲存空間的所屬地區取決於初始化配置的endpoint地區資訊。

  • OSS iOS SDK沒有提供stream類型的下載介面,但是提供了類似NSURLSession庫的didReceiveData函數的分段回調功能。如果設定了分段回調,下載的結果中將不再包含實際資料。

許可權說明

阿里雲帳號預設擁有全部許可權。阿里雲帳號下的RAM使用者或RAM角色預設沒有任何許可權,需要阿里雲帳號或帳號管理員通過RAM PolicyBucket Policy授予操作許可權。

API

Action

說明

GetObject

oss:GetObject

下載Object。

oss:GetObjectVersion

下載Object時,如果通過versionId指定了Object的版本,則需要授予此操作的許可權。

kms:Decrypt

下載Object時,如果Object的中繼資料套件含X-Oss-Server-Side-Encryption: KMS,則需要此操作的許可權。

範例程式碼

以下代碼用於流式下載:

OSSGetObjectRequest * request = [OSSGetObjectRequest new];
// 填寫Bucket名稱,例如examplebucket。
request.bucketName = @"examplebucket";
// 填寫不包含Bucket名稱在內的Object完整路徑,例如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(@"download object success!");
    } else {
        NSLog(@"download object failed, error: %@" ,task.error);
    }
    return nil;
}];
// [getTask waitUntilFinished];
// [request cancel];

相關文檔