如果要下载的文件太大,或者一次性下载耗时太长,您可以通过流式下载,一次处理部分内容,直到完成文件的下载。
OSS iOS SDK没有提供stream类型的下载接口,但是提供了类似NSURLSession
库的didRecieveData
函数的分段回调功能。如果设置了分段回调,下载的结果中将不再包含实际数据。
以下代码用于流式下载:
OSSGetObjectRequest * request = [OSSGetObjectRequest new]; // 以下为必选字段。其中objectKey等同于objectName,表示从OSS下载文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; // 设置分段回调函数 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];