接口文档

最近更新时间: 2024-10-17 17:10:00

在接口文档中,我们假设您已经完成了初始化的过程。接口文档重点在于列出详细的接口列表,并且举例如何使用。查询时建议Control+F搜索到想要查询的接口,然后看我们给出的接口简单说明,复制示例到您的工程中运行。

如果需要更多的功能,或者不明白返回的参数是什么意义,建议直接查看代码里的注释,可以三指轻按、Force-touch重按或者将鼠标停留在变量上,按Control+Command+D查看它的释义。

Service 操作

列出所有Bucket - Get Service

Get Service 接口是用来获取请求者名下的所有存储空间列表(Bucket list)。

返回结果QCloudListAllMyBucketsResult参数说明

参数名称 描述 类型
owner 存储桶持有者的信息 QCloudOwner *
buckets 所有的bucket信息 NSArray *

示例

    QCloudGetServiceRequest* request = [[QCloudGetServiceRequest alloc] init];
    [request setFinishBlock:^(QCloudListAllMyBucketsResult* result, NSError* error) {
      //
    }];
    [[QCloudCOSXMLService defaultCOSXML] GetService:request];

存储桶操作

列举存储桶内的内容

方法原型

进行存储桶操作之前,我们需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetBucketRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudGetBucketRequest,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的 GetBucket 方法发出请求。

  3. 从回调的 finishBlock 中的 QCloudListBucketResult 获取具体内容。

QCloudGetBucketRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
region 前缀匹配,用来规定返回的文件前缀地址 NSString *
delimiter 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始 NSString *
encodingType 规定返回值的编码方式,可选值:url NSString *
marker 默认以 UTF-8 二进制顺序列出条目,所有列出条目从 marker 开始 NSString *
maxKeys 单次返回的最大条目数量,默认 1000 int

示例

    QCloudGetBucketRequest* request = [QCloudGetBucketRequest new];
    request.bucket = @“testBucket-123456789”;
    request.maxKeys = 1000;
    [request setFinishBlock:^(QCloudListBucketResult * result, NSError*   error) {
    //additional actions after finishing
    }];
    [[QCloudCOSXMLService defaultCOSXML] GetBucket:request];

获取存储桶的 ACL(Access Control List)

方法原型

进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetBucketACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudGetBucketACLRequest,填入获取 ACL 的存储桶。

  2. 调用 QCloudCOSXMLService 对象中的 GetBucketACL 方法发出请求。

  3. 从回调的 finishBlock 中的 QCloudACLPolicy 获取具体内容。

QCloudGetBucketACLRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString *

返回结果 QCloudACLPolicy 参数说明

参数名称 描述 类型
owner 存储桶持有者的信息 QCloudACLOwner *
list accessControl被授权者与权限的信息 NSArray *

示例

  QCloudGetBucketACLRequest* getBucketACl   = [QCloudGetBucketACLRequest new];
    getBucketACl.bucket = @"testbucket-123456789";
    [getBucketACl setFinishBlock:^(QCloudACLPolicy * _Nonnull result, NSError * _Nonnull error) {
        //QCloudACLPolicy中包含了 Bucket 的 ACL 信息。
    }];

    [[QCloudCOSXMLService defaultCOSXML] GetBucketACL:getBucketACl];

设置存储桶的 ACL(Access Control List)

方法原型

进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutBucketACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudPutBucketACLRequest,填入需要设置的存储桶,然后根据设置值的权限类型分别填入不同的参数。

  2. 调用 QCloudCOSXMLService 对象中的 PutBucketACL 方法发出请求。

  3. 从回调的 finishBlock 中的获取设置是否成功,并做设置成功后的一些额外动作。

QCloudPutBucketACLRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
accessControlList 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private NSString *
grantRead 赋予被授权者读的权限。格式: id=" ",id=" ";
当需要给子账户授权时,id="qcs::cam::uin/:uin/",
当需要给根账户授权时,id="qcs::cam::uin/:uin/"
其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID
NSString *
grantWrite 授予被授权者写的权限。格式同上。 NSString *
grantFullControl 授予被授权者读写权限。格式同上。 NSString *

示例

    QCloudPutBucketACLRequest* putACL = [QCloudPutBucketACLRequest new];
    NSString* appID = @“您的 APP ID”;
    NSString *ownerIdentifier = [NSString stringWithFormat:@"qcs::cam::uin/%@:uin/%@", appID, appID];
    NSString *grantString = [NSString stringWithFormat:@"id=\"%@\"",ownerIdentifier];
    putACL.grantFullControl = grantString;
    putACL.bucket = @“testBucket-123456789”;
    [putACL setFinishBlock:^(id outputObject, NSError *error) {
    //error occucs if error != nil
    }];
    [[QCloudCOSXMLService defaultCOSXML] PutBucketACL:putACL];

获取存储桶的 CORS(跨域访问)设置

方法原型

进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutBucketCORSRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudPutBucketCORSRequest,填入需要获取 CORS 的存储桶。

  2. 调用 QCloudCOSXMLService 对象中的 GetBucketCORS 方法发出请求。

  3. 从回调的 finishBlock 中获取结果。结果封装在了 QCloudCORSConfiguration 对象中,该对象的 rules 属性是一个数组,数组里存放着一组 QCloudCORSRule,具体的 CORS 设置就封装在 QCloudCORSRule 对象里。

QCloudPutBucketCORSRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *

返回结果 QCloudCORSConfiguration 参数说明

参数名称 描述 类型
rules 放置 CORS 的数组, 数组内容为 QCloudCORSRule 实例 NSArray<CloudCORSRule*> *

QCloudCORSRule 参数说明

参数名称 描述 类型
identifier 配置规则的 ID NSString *
allowedMethod 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE NSArray<NSString*> *
allowedOrigin 允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:http://www.qq.com NSString *
allowedHeader 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 * NSArray<NSString*> *
maxAgeSeconds 设置 OPTIONS 请求得到结果的有效期 int
exposeHeader 设置浏览器可以接收到的来自服务器端的自定义头部信息 NSString *

示例

    QCloudGetBucketCORSRequest* corsReqeust = [QCloudGetBucketCORSRequest new];
    corsReqeust.bucket = @"testBucket-123456789";

    [corsReqeust setFinishBlock:^(QCloudCORSConfiguration * _Nonnull result, NSError * _Nonnull error) {
        //CORS设置封装在result中。
      }];

    [[QCloudCOSXMLService defaultCOSXML] GetBucketCORS:corsReqeust];

设置存储桶的 CORS(跨域访问)

方法原型

进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutBucketCORSRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudPutBucketCORSRequest,设置存储桶,并且将需要的 CORS 装入 QCloudCORSRule 中,如果有多组 CORS 设置,可以将多个 QCloudCORSRule 放在一个 NSArray 里,然后将该数组填入 QCloudCORSConfiguration的rules 属性里,放在 request 中。

  2. 调用 QCloudCOSXMLService 对象中的 PutBucketCORS 方法发出请求。

  3. 从回调的 finishBlock 中的获取设置成功与否(error 是否为空),并且做一些设置后的额外动作。

QCloudPutBucketCORSRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
corsConfiguration 封装了 CORS 的具体参数 QCloudCORSConfiguration *

QCloudCORSConfiguration 参数说明

参数名称 描述 类型
rules 放置 CORS 的数组, 数组内容为 QCloudCORSRule 实例 NSArray<QCloudCORSRule* > *

QCloudCORSRule 参数说明

参数名称 描述 类型
identifier 配置规则的ID NSString *
allowedMethod 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE NSArray <NSString*> *
allowedOrigin 允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:http://www.qq.com NSString *
allowedHeader 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 * NSArray <NSString * > *
maxAgeSeconds 设置 OPTIONS 请求得到结果的有效期 int
exposeHeader 设置浏览器可以接收到的来自服务器端的自定义头部信息 NSString *

示例

    QCloudPutBucketCORSRequest* putCORS = [QCloudPutBucketCORSRequest new];
    QCloudCORSConfiguration* cors = [QCloudCORSConfiguration new];

    QCloudCORSRule* rule = [QCloudCORSRule new];
    rule.identifier = @"sdk";
    rule.allowedHeader = @[@"origin",@"host",@"accept",@"content-type",@"authorization"];
    rule.exposeHeader = @"ETag";
    rule.allowedMethod = @[@"GET",@"PUT",@"POST", @"DELETE", @"HEAD"];
    rule.maxAgeSeconds = 3600;
    rule.allowedOrigin = @"*";

    cors.rules = @[rule];

    putCORS.corsConfiguration = cors;
    putCORS.bucket = @"testBucket-123456789";
    [putCORS setFinishBlock:^(id outputObject, NSError *error) {
        if (!error) {
        //success
        }
    }];
    [[QCloudCOSXMLService defaultCOSXML] PutBucketCORS:putCORS];

获取存储桶的地域信息

方法原型

进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetBucketLocationRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudGetBucketLocationRequest,填入 Bucket 名。

  2. 调用 QCloudCOSXMLService 对象中的 GetBucketLocation 方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudGetBucketLocationRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *

返回结果 QCloudBucketLocationConstraint 参数说明

参数名称 描述 类型
locationConstraint 说明 Bucket 所在区域 NSString*

示例


  QCloudGetBucketLocationRequest* locationReq = [QCloudGetBucketLocationRequest new];
    locationReq.bucket = @"testBucket-123456789";
    __block QCloudBucketLocationConstraint* location;
    [locationReq setFinishBlock:^(QCloudBucketLocationConstraint * _Nonnull result, NSError * _Nonnull error) {
        location = result;
    }];
    [[QCloudCOSXMLService defaultCOSXML] GetBucketLocation:locationReq];

删除存储桶 CORS 设置

方法原型

进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudDeleteBucketCORSRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudDeleteBucketCORSRequest,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudDeleteBucketCORSRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *

示例

 QCloudDeleteBucketCORSRequest* deleteCORS = [QCloudDeleteBucketCORSRequest new];
    deleteCORS.bucket = @"testBucket-123456789";
    [deleteCORS setFinishBlock:^(id outputObject, NSError *error) {
        //success if error == nil
    }];
    [[QCloudCOSXMLService defaultCOSXML] DeleteBucketCORS:deleteCORS];

查询 Bucket 中正在进行的分块上传

方法原型

进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudListBucketMultipartUploadsRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudListBucketMultipartUploadsRequest,填入需要的参数,如返回结果的前缀、编码方式等。

  2. 调用 QCloudCOSXMLService 对象中的 ListBucketMultipartUploads 方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudListBucketMultipartUploadsRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
prefix 限定返回的 Object key 必须以 Prefix 作为前缀。注意使用 prefix 查询时,返回的 key 中仍会包含 Prefix NSString *
delimiter 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始 NSString *
encodingType 规定返回值的编码方式,可选值:url NSString *
keyMarker 列出条目从该 key 值开始 NSString *
uploadIDMarker 列出条目从该 UploadId 值开始 int
maxUploads 设置最大返回的 multipart 数量,合法值 1 到 1000 int

返回结果 QCloudListMultipartUploadsResult 参数说明

参数名称 描述 类型
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
prefix 限定返回的 Object key 必须以 Prefix 作为前缀。注意使用 prefix 查询时,返回的 key 中仍会包含 Prefix NSString *
delimiter 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始 NSString *
encodingType 规定返回值的编码方式,可选值:url NSString *
keyMarker 列出条目从该 key 值开始 NSString *
maxUploads 设置最大返回的 multipart 数量,合法值 1 到 1000 int
uploads 所有已经上传的分片信息 NSArray*

示例

 QCloudListBucketMultipartUploadsRequest* uploads = [QCloudListBucketMultipartUploadsRequest new];
    uploads.bucket = @"testBucket-123456789";
    uploads.maxUploads = 100;
    __block NSError* resulError;
    __block QCloudListMultipartUploadsResult* multiPartUploadsResult;
    [uploads setFinishBlock:^(QCloudListMultipartUploadsResult* result, NSError *error) {
        multiPartUploadsResult = result;
        localError = error;
    }];
    [[QCloudCOSXMLService defaultCOSXML] ListBucketMultipartUploads:uploads];

Head Bucket

Head Bucket 请求可以确认该 Bucket 是否存在,是否有权限访问。Head 的权限与 Read 一致。当该 Bucket 存在时,返回200;当该 Bucket 无访问权限时,返回 403;当该 Bucket 不存在时,返回 404。

QCloudHeadBucketRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString *

示例

QCloudHeadBucketRequest* request = [QCloudHeadBucketRequest new];
 request.bucket = @"testBucket-123456789";
 [request setFinishBlock:^(id outputObject, NSError* error) {
     //设置完成回调。如果没有error,则可以正常访问bucket。如果有error,可以从error code和messasge中获取具体的失败原因。
 }];
 [[QCloudCOSXMLService defaultCOSXML] HeadBucket:request];

Put Bucket Tagging

QCloudPutBucketTaggingRequest参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString*
taggings 存放需要设置的tag数组 QCloudBucketTagging

示例

QCloudPutBucketTaggingRequest* putTagging = [QCloudPutBucketTaggingRequest new];
   QCloudBucketTagging* tagging = [QCloudBucketTagging new];
   QCloudBucketTag* tag = [QCloudBucketTag new];
   tag.key = @"tag的key";
   tag.value = @"tag的值";
   tagging.tagset = @[tag];

   putTagging.bucket = @"testBucket-123456789";
   putTagging.taggings = tagging;

   [putTagging setFinishBlock:^(id outputObject, NSError *error) {
       //完成回调
   }];
   [[QCloudCOSXMLService defaultCOSXML] PutBucketTagging:putTagging];

Delete Bucket Tagging

QCloudDeleteBucketTaggingRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString*

示例

QCloudDeleteBucketTaggingRequest* request = [QCloudDeleteBucketTaggingRequest new];
   request.bucket = @"testBucket-123456789";
   [request setFinishBlock:^(id outputObject, NSError* error) {
       //删除完成回调
   }];
   [[QCloudCOSXMLService defaultCOSXML] DeleteBucketTagging:request];

Get Bucket Tagging

QCloudGetBucketTaggingRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString*

返回结果 QCloudBucketTagging 参数说明

参数名称 描述 类型
tagest 装有bucket的tag的数组 NSArray*

示例

QCloudGetBucketTaggingRequest* request = [QCloudGetBucketTaggingRequest new];
   request.bucket = @"testBucket-123456789" ;

   [request setFinishBlock:^(QCloudBucketTagging* result, NSError* error) {
      //设置完成回调
   }];
   [[QCloudCOSXMLService defaultCOSXML] GetBucketTagging:request];

Put Bucket Lifecycle

COS 支持用户以生命周期配置的方式来管理 Bucket 中 Object 的生命周期。生命周期配置包含一个或多个将应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作)。 这些操作分为以下两种:

转换操作:定义对象转换为另一个存储类的时间。例如,您可以选择在对象创建 30 天后将其转换为 STANDARD_IA (IA,适用于不常访问) 存储类别。 过期操作:指定 Object 的过期时间。COS 将会自动为用户删除过期的 Object。

Put Bucket Lifecycle 用于为 Bucket 创建一个新的生命周期配置。如果该 Bucket 已配置生命周期,使用该接口创建新的配置的同时则会覆盖原有的配置。

参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString*
lifeCycle 生命周期配置 QCloudLifecycleConfiguration*

QCloudLifecycleConfiguration 参数说明

参数名称 描述 类型 必填
rules 规则描述集合的数组 NSArray<QCloudLifecycleRule*> *

QCloudLifecycleRule 参数说明

参数名称 描述 类型 必填
identifier 用于唯一地标识规则,长度不能超过 255 个字符 NSString*
filter Filter 用于描述规则影响的 Object 集合 QCloudLifecycleRuleFilter*
status 指明规则是否启用,枚举值:Enabled,Disabled QCloudLifecycleStatue
abortIncompleteMultipartUpload 设置允许分片上传保持运行的最长时间 QCloudLifecycleAbortIncompleteMultipartUpload
transition 规则转换属性,对象何时转换被转换为 Standard_IA 或 Nearline QCloudLifecycleTransition*
expiration 规则过期属性 QCloudLifecycleExpiration*
noncurrentVersionExpiration 指明非当前版本对象何时过期 QCloudLifecycleExpiration*
noncurrentVersionTransition 指明非当前版本对象何时转换被转换为 STANDARD_IA 或 NEARLINE QCloudNoncurrentVersionExpiration*

示例

QCloudPutBucketLifecycleRequest* request = [QCloudPutBucketLifecycleRequest new];
   request.bucket = @"填入bucket名";
  __block QCloudLifecycleConfiguration* configuration = [[QCloudLifecycleConfiguration alloc] init];
   QCloudLifecycleRule* rule = [[QCloudLifecycleRule alloc] init];
   rule.identifier = @"identifier";
   rule.status = QCloudLifecycleStatueEnabled;
   QCloudLifecycleRuleFilter* filter = [[QCloudLifecycleRuleFilter alloc] init];
   filter.prefix = @"0";
   rule.filter = filter;

   QCloudLifecycleTransition* transition = [[QCloudLifecycleTransition alloc] init];
   transition.days = 100;
   transition.storageClass = QCloudCOSStorageNearline;
   rule.transition = transition;
   request.lifeCycle = configuration;
   request.lifeCycle.rules = @[rule];
   [request setFinishBlock:^(id outputObject, NSError* error) {
     //设置完成回调
   }];
   [[QCloudCOSXMLService defaultCOSXML] PutBucketLifecycle:request];

Get Bucket Lifecycle

返回结果 QCloudLifecycleConfiguration 参数说明

与 Put Bucket Lifecycle 接口中的QCloudLifecycleConfiguration一致。

示例

QCloudGetBucketLifecycleRequest* request = [QCloudGetBucketLifecycleRequest new];
   request.bucket = @"testBucket-123456789";
   [request setFinishBlock:^(QCloudLifecycleConfiguration* result,NSError* error) {
     //设置完成回调
   }];
   [[QCloudCOSXMLService defaultCOSXML] GetBucketLifecycle:request];

Delete Bucket Lifecycle

返回结果 QCloudLifecycleConfiguration 参数说明

与 Put Bucket Lifecycle 接口中的QCloudLifecycleConfiguration一致。

示例

     QCloudDeleteBucketLifeCycleRequest* request = [[QCloudDeleteBucketLifeCycleRequest alloc ] init];
     request.bucket = @"testBucket-123456789";
     [request setFinishBlock:^(QCloudLifecycleConfiguration* result, NSError* error) {
       //设置完成回调
     }];
     [[QCloudCOSXMLService defaultCOSXML] DeleteBucketLifeCycle:request];

Put Bucket Versioning

Put Bucket Versioning 接口实现启用或者暂停存储桶的版本控制功能。请注意这是一个不可逆的接口,开启以后不可撤销。

QCloudPutBucketVersioningRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString*
configuration 版本控制的具体信息 QCloudBucketVersioningConfiguration*

QCloudBucketVersioningConfiguration 参数说明

参数名称 描述 类型 必填
status 说明版本是否开启,枚举值:Suspended\Enabled QCloudCOSBucketVersioningStatus

示例

QCloudPutBucketVersioningRequest* request = [[QCloudPutBucketVersioningRequest alloc] init];
 request.bucket = @"testBucket-123456789";
 QCloudBucketVersioningConfiguration* configuration = [[QCloudBucketVersioningConfiguration alloc] init];
 request.configuration = configuration;
 configuration.status = QCloudCOSBucketVersioningStatusEnabled;
 [request setFinishBlock:^(id outputObject, NSError* error) {
   //设置完成回调
 }];
 [[QCloudCOSXMLService defaultCOSXML] PutBucketVersioning:request];

Get Bucket Versioning

返回结果 QCloudBucketVersioningConfiguration 参数说明

参数名称 描述 类型
status 说明版本是否开启,枚举值:Suspended\Enabled QCloudCOSBucketVersioningStatus

示例

QCloudGetBucketVersioningRequest* request = [[QCloudGetBucketVersioningRequest alloc] init];
           request.bucket = @"testBucket-123456789";
           [request setFinishBlock:^(QCloudBucketVersioningConfiguration* result, NSError* error) {
             //设置完成回调
           }];
        [[QCloudCOSXMLService defaultCOSXML] GetBucketVersioning:request];

Put Bucket Replication

Put Bucket Replication 请求用于向开启版本管理的存储桶添加 replication 配置。如果存储桶已经拥有 replication 配置,那么该请求会替换现有配置。

QCloudPutBucketReplicationRequest参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString*
configuation QCloudBucketReplicationConfiguation*

注意: 使用该接口存储桶必须已经开启版本管理,版本管理详细请参见 Put Bucket Versioning。

返回结果 参数说明

示例

     QCloudPutBucketReplicationRequest* request = [[QCloudPutBucketReplicationRequest alloc] init];
     request.bucket = @"source-bucket";
     QCloudBucketReplicationConfiguation* configuration = [[QCloudBucketReplicationConfiguation alloc] init];
     configuration.role = [NSString identifierStringWithID:@"uin" :@"uin"];
     QCloudBucketReplicationRule* rule = [[QCloudBucketReplicationRule alloc] init];

     rule.identifier = @"identifier";
     rule.status = QCloudQCloudCOSXMLStatusEnabled;

     QCloudBucketReplicationDestination* destination = [[QCloudBucketReplicationDestination alloc] init];
     //qcs:id/64295985640140800:cos:[region]:appid/[AppId]:[bucketname]
     NSString* destinationBucket = @"destinationBucket";
     NSString* region = @"destinationRegion"
     destination.bucket = [NSString stringWithFormat:@"qcs:id/64295985640140800:cos:%@:appid/%@:%@",@"region",@"appid",@"destinationBucket"];
     rule.destination = destination;
     configuration.rule = @[rule];
     request.configuation = configuration;
     [request setFinishBlock:^(id outputObject, NSError* error) {
       //设置完成回调
     }];
     [[QCloudCOSXMLService defaultCOSXML] PutBucketRelication:request];

Get Bucket Replication

Get Bucket Replication 接口请求实现读取存储桶中用户跨区域复制配置信息。

返回结果 QCloudBucketReplicationConfiguation 参数说明

参数名称 描述 类型
role 发起者身份标识,格式为:qcs::cam::uin/:uin/ NSString*
rule 具体配置信息,最多支持 1000 个,所有策略只能指向一个目标存储桶 NSArray<QCloudBucketReplicationRule*> *

QCloudBucketReplicationRule 参数说明

参数名称 描述 类型
status 标志Rule是否生效 QCloudQCloudCOSXMLStatus
identifier 用来标注具体rule的名称 NSString*
prefix 前缀匹配策略,不可重叠,重叠返回错误。前缀匹配根目录为空 NSString*
destination 目标存储桶信息 QCloudBucketReplicationDestination*

示例

    QCloudGetBucketReplicationRequest* request = [[QCloudGetBucketReplicationRequest alloc] init];
    request.bucket = @"testBucket-123456789";

    [request setFinishBlock:^(QCloudBucketReplicationConfiguation* result, NSError* error) {
      //设置完成回调
    }];
    [[QCloudCOSXMLService defaultCOSXML] GetBucketReplication:request];

Delete Bucket Replication

Delete Bucket Replication 接口请求实现删除存储桶中用户跨区域复制配置。

参数说明

返回结果 参数说明

示例

    QCloudDeleteBucketReplicationRequest* request = [[QCloudDeleteBucketReplicationRequest alloc] init];
      request.bucket = @"testBucket-123456789";
      [request setFinishBlock:^(id outputObject, NSError* error) {
      //设置完成回调
      }];
    [[QCloudCOSXMLService defaultCOSXML] DeleteBucketReplication:request];

文件操作

在 COS 中,每个文件就是一个 Object(对象)。对文件的操作,其实也就是对对象的操作。

简单上传 (Put Object)

简单上传仅限于小文件(20MB以下)。简单上传支持从内存中上传文件。

QCloudPutObjectRequest 参数说明

参数名称 说明 类型 必填
Object 上传文件(对象)的文件名,也是对象的key NSString *
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
body 如果文件存放在硬盘中,这里是需要上传的文件的路径,填入NSURL * 类型变量。如果文件存放在内存中,则这里可以填入包含文件二进制数据的NSData * 类型变量 BodyType
storageClass 对象的存储级别 QCloudCOSStorageClass
cacheControl RFC 2616 中定义的缓存策略 NSString *
contentDisposition RFC 2616中定义的文件名称 NSString *
expect 当使用expect=@"100-Continue"时,在收到服务端确认后才会发送请求内容 NSString *
expires RFC 2616中定义的过期时间 NSString *
initMultipleUploadFinishBlock 如果该 request 产生了分片上传的请求,那么在分片上传初始化完成后,会通过这个 block 来回调,可以在该回调 block 中获取分片完成后的 bucket, key, uploadID,以及用于后续上传失败后恢复上传的ResumeData。 block
accessControlList 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private NSString *
grantRead 赋予被授权者读的权限。格式: id=" ",id=" ";当需要给子账户授权时,id="qcs::cam::uin/:uin/",当需要给根账户授权时,id="qcs::cam::uin/:uin/" 其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID NSString *
grantWrite 授予被授权者写的权限。格式同上。 NSString *
grantFullControl 授予被授权者读写权限。格式同上。 NSString *

示例

QCloudPutObjectRequest* put = [QCloudPutObjectRequest new];
put.object = @"object-name";
put.bucket = @"bucket-12345678";
put.body =  [@"testFileContent" dataUsingEncoding:NSUTF8StringEncoding];
[put setFinishBlock:^(id outputObject, NSError *error) {
    //完成回调
    if (nil == error) {
      //成功
    }
}];
[[QCloudCOSXMLService defaultCOSXML] PutObject:put];

查询对象的 ACL(Access Control List)

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetObjectACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudGetObjectACLRequest,填入存储桶的名称,和需要查询对象的名称。

  2. 调用 QCloudCOSXMLService 对象中的 GetObjectACL 方法发出请求。

  3. 从回调的 finishBlock 中的获取的 QCloudACLPolicy 对象中获取封装好的 ACL 的具体信息。

QCloudGetObjectACLRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
object 对象名 NSString *

示例

 request.bucket = self.aclBucket;
    request.object = @"对象的名称";
    request.bucket = @"testBucket-123456789"
    __block QCloudACLPolicy* policy;
    [request setFinishBlock:^(QCloudACLPolicy * _Nonnull result, NSError * _Nonnull error) {
        policy = result;
    }];
    [[QCloudCOSXMLService defaultCOSXML] GetObjectACL:request];

设置对象的 ACL(Access Control List)

方法原型

进行对象操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutObjectACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudPutObjectACLRequest,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。

  2. 调用 QCloudCOSXMLService 对象中的方法发出请求。

  3. 从回调的 finishBlock 中获取设置的完成情况,若 error 为空,则设置成功。

QCloudPutObjectACLRequest 参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString *
object 对象名 NSString *
accessControlList 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private NSString *
grantRead 赋予被授权者读的权限。格式: id=" ",id=" ";
当需要给子账户授权时,id="qcs::cam::uin/:uin/",
当需要给根账户授权时,id="qcs::cam::uin/:uin/"
其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID
NSString *
grantWrite 授予被授权者写的权限。格式同上。 NSString *
grantFullControl 授予被授权者读写权限。格式同上。 NSString *

示例

    QCloudPutObjectACLRequest* request = [QCloudPutObjectACLRequest new];
    request.object = @"需要设置 ACL 的对象名";
    request.bucket = @"testBucket-123456789";
    NSString *ownerIdentifier = [NSString stringWithFormat:@"qcs::cam::uin/%@:uin/%@",self.appID, self.appID];
    NSString *grantString = [NSString stringWithFormat:@"id=\"%@\"",ownerIdentifier];
    request.grantFullControl = grantString;
    __block NSError* localError;
    [request setFinishBlock:^(id outputObject, NSError *error) {
        localError = error;
    }];

    [[QCloudCOSXMLService defaultCOSXML] PutObjectACL:request];

下载文件

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

参数说明

参数名称 描述 类型 必填
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString *
object 对象名 NSString *
range RFC 2616 中定义的指定文件下载范围,以字节(bytes)为单位 NSString *
ifModifiedSince 如果文件修改时间晚于指定时间,才返回文件内容。否则返回 412 (not modified) NSString *
responseContentType 设置响应头部中的 Content-Type 参数 NSString *
responseContentLanguage 设置响应头部中的 Content-Language 参数 NSString *
responseContentExpires 设置响应头部中的 Content-Expires 参数 NSString *
responseCacheControl 设置响应头部中的 Cache-Control 参数 NSString *
responseContentDisposition 设置响应头部中的 Content-Disposition 参数。 NSString *
responseContentEncoding 设置响应头部中的 Content-Encoding 参数 NSString *

示例

  QCloudGetObjectRequest* request = [QCloudGetObjectRequest new];
  //设置下载的路径 URL,如果设置了,文件将会被下载到指定路径中
  request.downloadingURL = [NSURL URLWithString:QCloudTempFilePathWithExtension(@"downding")];
  request.object = @“你的 Object-Key”;
  request.bucket = @"testBucket-123456789";
  [request setFinishBlock:^(id outputObject, NSError *error) {
    //additional actions after finishing
}];
    [request setDownProcessBlock:^(int64_t bytesDownload, int64_t totalBytesDownload, int64_t totalBytesExpectedToDownload) {
     //下载过程中的进度
    }];
    [[QCloudCOSXMLService defaultCOSXML] GetObject:request];

Object 跨域访问配置的预请求

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudOptionsObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudOptionsObjectRequest,填入需要设置的对象名、存储桶名、模拟跨域访问请求的 http 方法和模拟跨域访问允许的访问来源。

  2. 调用 QCloudCOSXMLService 对象中的方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudOptionsObjectRequest 参数说明

参数名称 描述 类型 必填
object 对象名 NSString *
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
accessControlRequestMethod 模拟跨域访问的请求HTTP方法 NSArray<NSString*> *
origin 模拟跨域访问允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:http://www.qq.com NSString *
allowedHeader 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 * NSArray<NSString * > *

示例


 QCloudOptionsObjectRequest* request = [[QCloudOptionsObjectRequest alloc] init];
    request.bucket =@"存储桶名";
    request.origin = @"*";
    request.accessControlRequestMethod = @"get";
    request.accessControlRequestHeaders = @"host";
    request.object = @"对象名";
    __block id resultError;
    [request setFinishBlock:^(id outputObject, NSError* error) {
        resultError = error;
    }];

    [[QCloudCOSXMLService defaultCOSXML] OptionsObject:request];

删除单个对象

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudDeleteObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudDeleteObjectRequest,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudDeleteObjectRequest 参数说明

参数名称 类型 必填 描述
object 对象名 NSString *
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString *

示例


QCloudDeleteObjectRequest* deleteObjectRequest = [QCloudDeleteObjectRequest new];
    deleteObjectRequest.bucket = @"testBucket-123456789";
    deleteObjectRequest.object = @"对象名";

    __block NSError* resultError;
    [deleteObjectRequest setFinishBlock:^(id outputObject, NSError *error) {
        resultError = error;
    }];
    [[QCloudCOSXMLService defaultCOSXML] DeleteObject:deleteObjectRequest];

删除多个对象

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudDeleteMultipleObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudDeleteMultipleObjectRequest,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudDeleteMultipleObjectRequest 参数说明

参数名称 描述 类型 必填
object 对象名 NSString *
deleteObjects 封装了需要批量删除的多个对象的信息 QCloudDeleteInfo *

QCloudDeleteInfo参数说明

参数名称 描述 类型 必填
objects 存放需要删除对象信息的数组 NSArray<QCloudDeleteObjectInfo * > *

QCloudDeleteObjectInfo 参数说明

参数名称 描述 类型 必填
key 对象名 NSString *

示例


QCloudDeleteMultipleObjectRequest* delteRequest = [QCloudDeleteMultipleObjectRequest new];
    delteRequest.bucket = @"testBucket-123456789";

    QCloudDeleteObjectInfo* deletedObject0 = [QCloudDeleteObjectInfo new];
    deletedObject0.key = @"第一个对象名";

    QCloudDeleteObjectInfo* deleteObject1 = [QCloudDeleteObjectInfo new];
    deleteObject1.key = @"第二个对象名";

    QCloudDeleteInfo* deleteInfo = [QCloudDeleteInfo new];
    deleteInfo.quiet = NO;
    deleteInfo.objects = @[ deletedObject0,deleteObject2];

    delteRequest.deleteObjects = deleteInfo;

    __block NSError* resultError;
    [delteRequest setFinishBlock:^(QCloudDeleteResult* outputObject, NSError *error) {
        localError = error;
        deleteResult = outputObject;
    }];

    [[QCloudCOSXMLService defaultCOSXML] DeleteMultipleObject:delteRequest];

初始化分片上传

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudInitiateMultipartUploadRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudInitiateMultipartUploadRequest,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的 InitiateMultipartUpload 方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

参数说明

参数名称 描述 类型 必填
Object 上传文件(对象)的文件名,也是对象的key NSString *
bucket 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 NSString *
storageClass 对象的存储级别 QCloudCOSStorageClass
cacheControl RFC 2616 中定义的缓存策略 NSString *
contentDisposition RFC 2616中 定义的文件名称 NSString *
expect 当使用 expect=@"100-continue"时,在收到服务端确认后才会发送请求内容 NSString *
expires RFC 2616 中定义的过期时间 NSString *
storageClass 对象的存储级别 QCloudCOSStorageClass
accessControlList 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private NSString *
grantRead 赋予被授权者读的权限。格式: id=" ",id=" ";
当需要给子账户授权时,id="qcs::cam::uin/:uin/",
当需要给根账户授权时,id="qcs::cam::uin/:uin/"
其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID
NSString *
grantWrite 授予被授权者写的权限。格式同上。 NSString *
grantFullControl 授予被授权者读写权限。格式同上。 NSString *

示例


QCloudInitiateMultipartUploadRequest* initrequest = [QCloudInitiateMultipartUploadRequest new];
    initrequest.bucket = @"testBucket-123456789";
    initrequest.object = @"对象名";
    __block QCloudInitiateMultipartUploadResult* initResult;
    [initrequest setFinishBlock:^(QCloudInitiateMultipartUploadResult* outputObject, NSError *error) {
        initResult = outputObject;
    }];
    [[QCloudCOSXMLService defaultCOSXML] InitiateMultipartUpload:initrequest];

获取对象meta信息

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudHeadObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudHeadObjectRequest,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的 HeadObject 方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudHeadObjectRequest 参数说明

参数名称 描述 类型 必填
Object 对象名 NSString *
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString *
ifModifiedSince 如果文件修改时间晚于指定时间,才返回文件内容。否则返回 304 (not modified) NSString *

示例

QCloudHeadObjectRequest* headerRequest = [QCloudHeadObjectRequest new];
    headerRequest.object = @“对象名”;
    headerRequest.bucket = @"testBucket-123456789";

    __block id resultError;
    [headerRequest setFinishBlock:^(NSDictionary* result, NSError *error) {
        resultError = error;
    }];

    [[QCloudCOSXMLService defaultCOSXML] HeadObject:headerRequest];

追加文件

Append Object 接口请求可以将一个 Object(文件)以分块追加的方式上传至指定存储桶中。Object 属性为 Appendable 时,才能使用 Append Object 接口上传。 Object 属性可以在 Head Object 操作中查询到,发起 Head Object 请求时,会返回自定义 Header 的『x-cos-object-type』,该 Header 只有两个枚举值:Normal 或者 Appendable。通过 Append Object 操作创建的 Object 类型为 Appendable 文件;通过 Put Object 上传的 Object 是 Normal 文件。 当 Appendable 的 Object 被执行 Put Object 的请求操作以后,原 Object 被覆盖,属性改变为 Normal 。 追加上传的 Object 建议大小 1M-5G。如果 Position 的值和当前 Object 的长度不致,COS 会返回 409 错误。如果 Append 一个 Normal 属性的文件,COS 会返回 409 ObjectNotAppendable。

方法原型

进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudAppendObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:

  1. 实例化 QCloudAppendObjectRequest,填入需要的参数。

  2. 调用 QCloudCOSXMLService 对象中的 AppendObject 方法发出请求。

  3. 从回调的 finishBlock 中的获取具体内容。

QCloudAppendObjectRequest 参数说明

参数名称 描述 类型 必填
Object 上传文件(对象)的文件名,也是对象的 key NSString *
bucket 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 NSString *
position 追加操作的起始点,单位:字节;首次追加 position=0,后续追加 position= 当前 Object 的 content-length int
body 需要上传的文件的路径。填入NSURL * 类型变量 BodyType
storageClass QCloudCOSStorageClass 对象的存储级别
cacheControl RFC 2616中定义的缓存策略 NSString *
contentDisposition RFC 2616中定义的文件名称 NSString *
expect 当使用 expect=@"100-continue" 时,在收到服务端确认后才会发送请求内容 NSString *
expires RFC 2616 中定义的过期时间 NSString *
storageClass 对象的存储级别 QCloudCOSStorageClass
accessControlList 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private NSString *
grantRead 赋予被授权者读的权限。格式: id=" ",id=" ";
当需要给子账户授权时,id="qcs::cam::uin/:uin/",
当需要给根账户授权时,id="qcs::cam::uin/:uin/"
其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID
NSString *
grantWrite 授予被授权者写的权限。格式同上。 NSString *
grantFullControl 授予被授权者读写权限。格式同上。 NSString *

示例

 QCloudAppendObjectRequest* put = [QCloudAppendObjectRequest new];
    put.object = [NSUUID UUID].UUIDString;
    put.bucket = @testBucket-123456789;
    put.body =  文件的URL,NSURL*类型
    __block NSDictionary* result = nil;
    [put setFinishBlock:^(id outputObject, NSError *error) {
        result = outputObject;
    }];
    [[QCloudCOSXMLService defaultCOSXML] AppendObject:put];

服务器端加密(Server side encryption)说明

COS支持服务器端加密(Server side encryption),该特性的作用是object在上传到COS后会进行服务器端加密,然后再存储。下载时候会拿出原始没有解密的数据,进行解密后返回。这个过程对客户端是透明的,无需关心具体的加密过程。

如果需要使用该特性,那么在上传object时,需要在上传HTTP请求中加入一个额外的头部,key为 x-cos-server-side-encryption, 值为AES256。在下载时候直接照常GetObject即可。

利用SDK中自定义头部的功能可以实现这一需求。只需要在上传请求中加入自定义头部即可:

   QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];
   __block NSString* object = [NSUUID UUID].UUIDString;
   put.object = @"object";
   put.bucket = @"存储桶名";
   put.body =  @"文件在本地的URL";
   put.customHeaders = @{@"x-cos-server-side-encryption":@"AES256"};
   [put setFinishBlock:^(QCloudUploadObjectResult *result, NSError *error) {
     //完成回调
   }];
   [[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];

下载时候无需关心加解密过程:

QCloudGetObjectRequest* getObjectRequest = [[QCloudGetObjectRequest alloc] init];
       getObjectRequest.bucket = self.bucket;
       getObjectRequest.object = object;
       NSURL* downloadPath = @“下载到本地的路径”;
       getObjectRequest.downloadingURL = downloadPath;
       [getObjectRequest setFinishBlock:^(id outputObject, NSError *error) {
         //完成回调
       }];
       [[QCloudCOSXMLService defaultCOSXML] GetObject:getObjectRequest];