开发者社区 问答 正文

iOS-SDK之如何实现快速入门?

以下演示了上传、下载文件的基本流程。更多细节用法可以参考本工程的:
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. [backcolor=transparent]NSString[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]endpoint [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"https://oss-cn-hangzhou.aliyuncs.com"[backcolor=transparent];
  2. [backcolor=transparent]// 移动端建议使用STS方式初始化OSSClient。可以通过sample中STS使用说明了解更多(https://github.com/aliyun/aliyun-oss-ios-sdk/tree/master/DemoByOC)
  3. [backcolor=transparent]id[backcolor=transparent]<[backcolor=transparent]OSSCredentialProvider[backcolor=transparent]>[backcolor=transparent] credential [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent][[[backcolor=transparent]OSSStsTokenCredentialProvider[backcolor=transparent] alloc[backcolor=transparent]][backcolor=transparent] initWithAccessKeyId[backcolor=transparent]:@[backcolor=transparent]"AccessKeyId"[backcolor=transparent] secretKeyId[backcolor=transparent]:@[backcolor=transparent]"AccessKeySecret"[backcolor=transparent] securityToken[backcolor=transparent]:@[backcolor=transparent]"SecurityToken"[backcolor=transparent]];
  4. [backcolor=transparent]client [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent][[[backcolor=transparent]OSSClient[backcolor=transparent] alloc[backcolor=transparent]][backcolor=transparent] initWithEndpoint[backcolor=transparent]:[backcolor=transparent]endpoint credentialProvider[backcolor=transparent]:[backcolor=transparent]credential[backcolor=transparent]];

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

STEP-2. 上传文件


这里假设您已经在控制台上拥有自己的Bucket。SDK的所有操作,都会返回一个OSSTask,您可以为这个task设置一个延续动作,等待其异步完成,也可以通过调用waitUntilFinished阻塞等待其完成。
  1. [backcolor=transparent]OSSPutObjectRequest[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent] put [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent][[backcolor=transparent]OSSPutObjectRequest[backcolor=transparent] [backcolor=transparent]new[backcolor=transparent]];
  2. [backcolor=transparent]put[backcolor=transparent].[backcolor=transparent]bucketName [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]@[backcolor=transparent]"<bucketName>"[backcolor=transparent];
  3. [backcolor=transparent]put[backcolor=transparent].[backcolor=transparent]objectKey [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]@[backcolor=transparent]"<objectKey>"[backcolor=transparent];
  4. [backcolor=transparent]put[backcolor=transparent].[backcolor=transparent]uploadingData [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]<[backcolor=transparent]NSData[backcolor=transparent] [backcolor=transparent]*>;[backcolor=transparent] [backcolor=transparent]// 直接上传NSData
  5. [backcolor=transparent]put[backcolor=transparent].[backcolor=transparent]uploadProgress [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]^([backcolor=transparent]int64_t[backcolor=transparent] bytesSent[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]int64_t[backcolor=transparent] totalByteSent[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]int64_t[backcolor=transparent] totalBytesExpectedToSend[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  6. [backcolor=transparent]    [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"%lld, %lld, %lld"[backcolor=transparent],[backcolor=transparent] bytesSent[backcolor=transparent],[backcolor=transparent] totalByteSent[backcolor=transparent],[backcolor=transparent] totalBytesExpectedToSend[backcolor=transparent]);
  7. [backcolor=transparent]};
  8. [backcolor=transparent]OSSTask[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent] putTask [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent][[backcolor=transparent]client putObject[backcolor=transparent]:[backcolor=transparent]put[backcolor=transparent]];
  9. [backcolor=transparent][[backcolor=transparent]putTask continueWithBlock[backcolor=transparent]:^[backcolor=transparent]id[backcolor=transparent]([backcolor=transparent]OSSTask[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]task[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  10. [backcolor=transparent]    [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent](![backcolor=transparent]task[backcolor=transparent].[backcolor=transparent]error[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  11. [backcolor=transparent]        [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"upload object success!"[backcolor=transparent]);
  12. [backcolor=transparent]    [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]else[backcolor=transparent] [backcolor=transparent]{
  13. [backcolor=transparent]        [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"upload object failed, error: %@"[backcolor=transparent] [backcolor=transparent],[backcolor=transparent] task[backcolor=transparent].[backcolor=transparent]error[backcolor=transparent]);
  14. [backcolor=transparent]    [backcolor=transparent]}
  15. [backcolor=transparent]    [backcolor=transparent]return[backcolor=transparent] [backcolor=transparent]nil[backcolor=transparent];
  16. [backcolor=transparent]}];
  17. [backcolor=transparent]// 可以等待任务完成
  18. [backcolor=transparent]// [putTask waitUntilFinished];


STEP-3. 下载指定文件


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

展开
收起
青衫无名 2017-10-18 13:58:55 1633 分享 版权
0 条回答
写回答
取消 提交回答