接口文档

最近更新时间: 2025-02-18 16:02: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-1253653367NSString *
region前缀匹配,用来规定返回的文件前缀地址NSString *
delimiter定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始NSString *
encodingType规定返回值的编码方式,可选值:urlNSString *
marker默认以 UTF-8 二进制顺序列出条目,所有列出条目从 marker 开始NSString *
maxKeys单次返回的最大条目数量,默认 1000int

示例

  • 复制
    复制成功
    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-1253653367NSString *

返回结果 QCloudACLPolicy 参数说明

参数名称描述类型
owner存储桶持有者的信息QCloudACLOwner *
listaccessControl被授权者与权限的信息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-1253653367NSString *
accessControlList定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:privateNSString *
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-1253653367NSString *

返回结果 QCloudCORSConfiguration 参数说明

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

QCloudCORSRule 参数说明

参数名称描述类型
identifier配置规则的 IDNSString *
allowedMethod允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETENSArray `*`
allowedOrigin允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:`http://www.qq.com`NSString *
allowedHeader在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 *NSArray `*`
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-1253653367NSString *
corsConfiguration封装了 CORS 的具体参数QCloudCORSConfiguration *

QCloudCORSConfiguration 参数说明

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

QCloudCORSRule 参数说明

参数名称描述类型
identifier配置规则的IDNSString *
allowedMethod允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETENSArray *
allowedOrigin允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:`http://www.qq.com`NSString *
allowedHeader在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 *NSArray *
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-1253653367NSString *

返回结果 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-1253653367NSString *

示例

  • 复制
    复制成功
 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-1253653367NSString *
prefix限定返回的 Object key 必须以 Prefix 作为前缀。注意使用 prefix 查询时,返回的 key 中仍会包含 PrefixNSString *
delimiter定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始NSString *
encodingType规定返回值的编码方式,可选值:urlNSString *
keyMarker列出条目从该 key 值开始NSString *
uploadIDMarker列出条目从该 UploadId 值开始int
maxUploads设置最大返回的 multipart 数量,合法值 1 到 1000int

返回结果 QCloudListMultipartUploadsResult 参数说明

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

示例

  • 复制
    复制成功
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-1253653367NSString*
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-1253653367NSString*

示例

  • 复制
    复制成功
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-1253653367NSString*

返回结果 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-1253653367NSString*
lifeCycle生命周期配置QCloudLifecycleConfiguration*

QCloudLifecycleConfiguration 参数说明

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

QCloudLifecycleRule 参数说明

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

示例

  • 复制
    复制成功
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-1253653367NSString*
configuration版本控制的具体信息QCloudBucketVersioningConfiguration*

QCloudBucketVersioningConfiguration 参数说明

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

示例

  • 复制
    复制成功
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\EnabledQCloudCOSBucketVersioningStatus

示例

  • 复制
    复制成功
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-1253653367NSString*
configuationQCloudBucketReplicationConfiguation*

注意: 使用该接口存储桶必须已经开启版本管理,版本管理详细请参见 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 参数说明

参数名称描述类型
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上传文件(对象)的文件名,也是对象的keyNSString *
bucket存储桶名,可在COSV5控制台上面看到,格式为`-` ,例如 testBucket-1253653367NSString *
body如果文件存放在硬盘中,这里是需要上传的文件的路径,填入NSURL * 类型变量。如果文件存放在内存中,则这里可以填入包含文件二进制数据的NSData * 类型变量BodyType
storageClass对象的存储级别QCloudCOSStorageClass
cacheControlRFC 2616 中定义的缓存策略NSString *
contentDispositionRFC 2616中定义的文件名称NSString *
expect当使用expect=@"100-Continue"时,在收到服务端确认后才会发送请求内容NSString *
expiresRFC 2616中定义的过期时间NSString *
initMultipleUploadFinishBlock如果该 request 产生了分片上传的请求,那么在分片上传初始化完成后,会通过这个 block 来回调,可以在该回调 block 中获取分片完成后的 bucket, key, uploadID,以及用于后续上传失败后恢复上传的ResumeData。block
accessControlList定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:privateNSString *
grantRead赋予被授权者读的权限。格式: id=" ",id=" ";当需要给子账户授权时,id="qcs::cam::uin/:uin/",当需要给根账户授权时,id="qcs::cam::uin/:uin/" 其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 IDNSString *
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-1253653367NSString *
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-1253653367NSString *
object对象名NSString *
accessControlList定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:privateNSString *
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-1253653367NSString *
object对象名NSString *
rangeRFC 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-1253653367NSString *
accessControlRequestMethod模拟跨域访问的请求HTTP方法NSArray *
origin模拟跨域访问允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:`http://www.qq.com`NSString *
allowedHeader在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 *NSArray *

示例

  • 复制
    复制成功

 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-1253653367NSString *

示例

  • 复制
    复制成功

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 参数说明

参数名称描述类型必填
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上传文件(对象)的文件名,也是对象的keyNSString *
bucket存储桶名,可在COSV5控制台上面看到,格式为`-` ,例如 testBucket-1253653367NSString *
storageClass对象的存储级别QCloudCOSStorageClass
cacheControlRFC 2616 中定义的缓存策略NSString *
contentDispositionRFC 2616中 定义的文件名称NSString *
expect当使用 `expect=@"100-continue" `时,在收到服务端确认后才会发送请求内容NSString *
expiresRFC 2616 中定义的过期时间NSString *
storageClass对象的存储级别QCloudCOSStorageClass
accessControlList定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:privateNSString *
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-1253653367NSString *
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上传文件(对象)的文件名,也是对象的 keyNSString *
bucket存储桶名,可在COSV5控制台上面看到,格式为`-`,例如 testBucket-1253653367NSString *
position追加操作的起始点,单位:字节;首次追加 position=0,后续追加 position= 当前 Object 的 content-lengthint
body需要上传的文件的路径。填入NSURL * 类型变量BodyType
storageClassQCloudCOSStorageClass对象的存储级别
cacheControlRFC 2616中定义的缓存策略NSString *
contentDispositionRFC 2616中定义的文件名称NSString *
expect当使用 `expect=@"100-continue"` 时,在收到服务端确认后才会发送请求内容NSString *
expiresRFC 2616 中定义的过期时间NSString *
storageClass对象的存储级别QCloudCOSStorageClass
accessControlList定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:privateNSString *
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];