日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

iOS快速入門

本文介紹如何快速使用OSS iOS SDK完成常見操作,例如創建存儲空間(Bucket)、上傳文件(Object)、下載文件等。

前提條件

已安裝iOS SDK。具體操作,請參見安裝

示例工程

您可以通過查看以下示例工程,了解如何上傳創建存儲空間、本地文件、下載文件等操作:

示例工程用法如下:

  • 克隆工程:通過 git clone 獲取示例工程

  • 配置參數。

  • 啟動本地 STS 鑒權服務。

    • 根據工程sts_local_server目錄中本地鑒權服務腳本文件啟動本地STS鑒權服務器,配置其中的AccessKeyId、AccessKeySecret以及RoleArn參數信息。

    • 通過Python啟動本機HTTP服務httpserver.py,以便在客戶端代碼中訪問本地服務獲取StsToken.AccessKeyId、StsToken.SecretKeyStsToken.SecurityToken。

運行工程IOS demo得到如下: fig_ios_phpnedemo

示例代碼

以下演示了在iOS平臺以及Mac平臺上傳和下載文件的流程。

  1. 導入OSS軟件包

    在使用OSS服務前,請先導入所需的頭文件。

    #import <AliyunOSSiOS/OSSService.h>                            
  1. 初始化OSSClient

    1. 授權訪問

      OSS支持三種鑒權方式:明文設置、自簽名模式、STS鑒權模式。建議移動端使用STS鑒權模式,詳細配置說明請參見STS鑒權模式

      1. 獲取臨時訪問憑證

        1. 明文設置:直接使用AccessKeyIdAccessKeySecret進行鑒權。

        2. 自簽名模式:生成簽名字符串進行鑒權,請參見自簽名模式

        3. STS鑒權模式:使用臨時安全憑證進行鑒權。調用STS服務的AssumeRole接口或使用各語言STS SDK來獲取臨時訪問憑證,請參見使用STS臨時訪問憑證訪問OSS

      2. 使用臨時訪問憑證初始化SDK。

    2. 以下是一個在完整應用程序生命周期中初始化 OSSClient 的示例代碼:

      @interface AppDelegate ()
      @property (nonatomic, strong) OSSClient *client;
      @end
      /**
       * 獲取sts信息的url,配置在業務方自己的搭建的服務器上。
       */
      #define OSS_STS_URL                 @"oss_sts_url"
      /**
       * bucket所在的regionendpoint。
       */
      #define OSS_ENDPOINT                @"your bucket's endpoint"
      
      @implementation AppDelegate
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
          // Override point for customization after application launch.
          
          // 初始化OSSClient實例
          [self setupOSSClient];    
          return YES;
      }
      - (void)setupOSSClient {
          // 初始化具有自動刷新的provider
          id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:OSS_STS_URL];   
          // client端的配置,如超時時間,開啟dns解析等等
          OSSClientConfiguration *cfg = [[OSSClientConfiguration alloc] init];
          client = [[OSSClient alloc] initWithEndpoint:OSS_ENDPOINT credentialProvider:credentialProvider clientConfiguration:cfg];
      }
      說明

      如果您的應用只用到一個訪問域名和數據中心下的bucket,建議保持OSSClient實例與應用程序的生命周期一致。

  2. 創建存儲空間

    以下代碼用于創建名為examplebucket的存儲空間。

    // 構建創建Bucket的請求。
    OSSCreateBucketRequest * create = [OSSCreateBucketRequest new];
    // 設置存儲空間名稱為examplebucket。
    create.bucketName = @"examplebucket";
    // 設置訪問權限為私有。
    create.xOssACL = @"private";
    // 設置存儲類型為低頻訪問類型IA。
    create.storageClass = OSSBucketStorageClassIA;
    
    OSSTask * createTask = [client createBucket:create];
    
    [createTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"create bucket success!");
        } else {
            NSLog(@"create bucket failed, error: %@", task.error);
        }
        return nil;
    }];
    // 實現阻塞等待任務完成。
    // [createTask waitUntilFinished];          
    說明

    SDK的所有操作都會返回OSSTask,您可以為OSSTask設置延續動作,等待其異步完成,也可以通過調用waitUntilFinished阻塞等待其完成。

  3. 上傳文件

    以下代碼用于將本地文件上傳到OSS。

    OSSPutObjectRequest * put = [OSSPutObjectRequest new];
    // 填寫Bucket名稱,例如examplebucket。
    put.bucketName = @"examplebucket";
    // 填寫Object完整路徑。Object完整路徑中不能包含Bucket名稱,例如exampledir/testdir/exampleobject.txt。
    put.objectKey = @"exampledir/testdir/exampleobject.txt";
    put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
    // put.uploadingData = <NSData *>; // 直接上傳NSData。
    // 直接上傳NSData。
    put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
        NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
    };
    OSSTask * putTask = [client putObject:put];
    [putTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"upload object success!");
        } else {
            NSLog(@"upload object failed, error: %@" , task.error);
        }
        return nil;
    }];
    // 實現阻塞等待任務完成。
    // [putTask waitUntilFinished];
  4. 下載指定文件

    以下代碼用于下載指定OSS文件到本地文件。

    OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    // 填寫Bucket名稱,例如examplebucket。
    request.bucketName = @"examplebucket";
    // 填寫Object完整路徑。Object完整路徑中不能包含Bucket名稱,例如exampledir/testdir/exampleobject.txt。
    request.objectKey = @"exampledir/testdir/exampleobject.txt";
    request.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
        NSLog(@"%lld, %lld, %lld", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
    };
    OSSTask * getTask = [client getObject:request];
    [getTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            NSLog(@"download object success!");
            OSSGetObjectResult * getResult = task.result;
            NSLog(@"download result: %@", getResult.downloadedData);
        } else {
            NSLog(@"download object failed, error: %@" ,task.error);
        }
        return nil;
    }];
    // 實現阻塞等待任務完成。
    // [task waitUntilFinished];