全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

快速入门

更新时间:2017-09-15 16:50:20

以下演示了上传、下载文件的基本流程。更多细节用法可以参考本工程的:

test资源:点击查看

或者:

demo示例: 点击查看

STEP-1. 初始化OSSClient

初始化主要完成Endpoint设置、鉴权方式设置、Client参数设置。其中,鉴权方式包含明文设置模式、自签名模式、STS鉴权模式。如果要使用STS鉴权请先阅读访问控制章节了解RAM的基础知识。以下内容假设您已开通RAM服务并了解RAM相关内容。了解如何获取子账户AccessKeyId,SecretKeyId以及RoleArn信息。

完善脚本文件中AccessKeyId,SecretKeyId以及RoleArn参数信息。通过python可以启动一个本机http服务。在客户端代码中访问本地服务从而获得StsToken.AccessKeyId,StsToken.SecretKeyId以及StsToken.SecurityToken。

更多信息可查看sample中STS使用说明点击查看

  1. NSString *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
  2. // 移动端建议使用STS方式初始化OSSClient。可以通过sample中STS使用说明了解更多(https://github.com/aliyun/aliyun-oss-ios-sdk/tree/master/DemoByOC)
  3. id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:@"AccessKeyId" secretKeyId:@"AccessKeySecret" securityToken:@"SecurityToken"];
  4. client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];

通过OSSClient发起上传、下载请求是线程安全的,您可以并发执行多个任务。

STEP-2. 上传文件

这里假设您已经在控制台上拥有自己的Bucket。SDK的所有操作,都会返回一个OSSTask,您可以为这个task设置一个延续动作,等待其异步完成,也可以通过调用waitUntilFinished阻塞等待其完成。

  1. OSSPutObjectRequest * put = [OSSPutObjectRequest new];
  2. put.bucketName = @"<bucketName>";
  3. put.objectKey = @"<objectKey>";
  4. put.uploadingData = <NSData *>; // 直接上传NSData
  5. put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
  6. NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
  7. };
  8. OSSTask * putTask = [client putObject:put];
  9. [putTask continueWithBlock:^id(OSSTask *task) {
  10. if (!task.error) {
  11. NSLog(@"upload object success!");
  12. } else {
  13. NSLog(@"upload object failed, error: %@" , task.error);
  14. }
  15. return nil;
  16. }];
  17. // 可以等待任务完成
  18. // [putTask waitUntilFinished];

STEP-3. 下载指定文件

下载一个指定objectNSData:

  1. OSSGetObjectRequest * request = [OSSGetObjectRequest new];
  2. request.bucketName = @"<bucketName>";
  3. request.objectKey = @"<objectKey>";
  4. request.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
  5. NSLog(@"%lld, %lld, %lld", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
  6. };
  7. OSSTask * getTask = [client getObject:request];
  8. [getTask continueWithBlock:^id(OSSTask *task) {
  9. if (!task.error) {
  10. NSLog(@"download object success!");
  11. OSSGetObjectResult * getResult = task.result;
  12. NSLog(@"download result: %@", getResult.downloadedData);
  13. } else {
  14. NSLog(@"download object failed, error: %@" ,task.error);
  15. }
  16. return nil;
  17. }];
  18. // 如果需要阻塞等待任务完成
  19. // [task waitUntilFinished];
本文导读目录