全部产品
Search
文档中心

对象存储 OSS:iOS流式下载

更新时间:Aug 20, 2024

如果要下载的文件太大,或者一次性下载耗时太长,您可以通过流式下载,一次处理部分内容,直到完成文件的下载。

注意事项

  • 使用本文示例前您需要先通过自定义域名、STS等方式新建OSSClient,具体请参见初始化

    说明

    所创建存储空间的所属地域取决于初始化配置的endpoint地域信息。

  • 要下载文件,您必须有ossGetObject权限。具体操作,请参见为RAM用户授权自定义的权限策略

  • OSS iOS SDK没有提供stream类型的下载接口,但是提供了类似NSURLSession库的didReceiveData函数的分段回调功能。如果设置了分段回调,下载的结果中将不再包含实际数据。

示例代码

以下代码用于流式下载:

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];

相关文档