接口文档

最近更新时间: 2024-12-19 17:12: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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为-,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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];

文件操作

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

简单上传 (Put Object)

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

QCloudPutObjectRequest 参数说明

参数名称说明类型必填
Object上传文件(对象)的文件名,也是对象的keyNSString *
bucket存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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存储桶名,可在CSP控制台上面看到,格式为- ,例如 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];

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

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

如果需要使用该特性,那么在上传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];