QCloudCOSXMLService Class Reference

Inherits from QCloudService
Declared in QCloudCOSXMLService.h
QCloudCOSXMLService.m

Overview

QCloudCOSXMLService 是对所有接口请求发起的封装;通过QCloudCOSXMLService实例来发起网络请求

详情请查看:https://cloud.tencent.com/document/product/436/11280

配置QCloudCOSXMLService 1:实例化 QCloudServiceConfiguration 对象:

QCloudServiceConfiguration* configuration = [QCloudServiceConfiguration new];
configuration.appID = @"APPID"  //腾讯云账号的 APPID;

2:实例化 QCloudCOSXMLService 对象:

+ (QCloudCOSXMLService*) registerDefaultCOSXMLWithConfiguration
:(QCloudServiceConfiguration*)configuration;

3:实例化 QCloudCOSTransferManagerService 对象:

+ (QCloudCOSTransferMangerService*) registerDefaultCOSTransferMangerWithConfiguration
:(QCloudServiceConfiguration*)configuration;

使用步骤:

1:实例并初始化好要使用的request;

2:使用[QCloudCOSXMLService defaultCOSXML] 获取到 QCloudCOSXMLService实例;

3:调用对应发起请求的方法:如get,post,put,delete,

Other Methods

+ defaultCOSXML

获取默认的cosxml服务

+ (QCloudCOSXMLService *)defaultCOSXML

Declared In

QCloudCOSXMLService.h

+ registerDefaultCOSXMLWithConfiguration:

注册默认的cosxml服务

+ (QCloudCOSXMLService *)registerDefaultCOSXMLWithConfiguration:(QCloudServiceConfiguration *)configuration

Parameters

configuration

cosxml服务对应的配置信息,一旦配置之后无法修改

Declared In

QCloudCOSXMLService.h

+ cosxmlServiceForKey:

获取指定key的cosxml服务

+ (QCloudCOSXMLService *)cosxmlServiceForKey:(NSString *)key

Parameters

key

要获取的cosxml服务对应的key

Declared In

QCloudCOSXMLService.h

+ registerCOSXMLWithConfiguration:withKey:

注册特定key的cosxml服务

+ (QCloudCOSXMLService *)registerCOSXMLWithConfiguration:(QCloudServiceConfiguration *)configuration withKey:(NSString *)key

Parameters

configuration

cosxml对应的配置信息

key

该cosxml对应的key

Declared In

QCloudCOSXMLService.h

– getURLWithBucket:object:withAuthorization:regionName:

根据Bukcet, Object来生成可以直接访问的URL。如果您的Bucket是私有读的话,那么访问的时候需要带上签名, 反之则不需要。

- (NSString *)getURLWithBucket:(NSString *)bucket object:(NSString *)object withAuthorization:(BOOL)withAuthorization regionName:(NSString *)regionName

Parameters

bucket

存储桶

object

存储对象, 请传入URL Encode后的结果

withAuthorization

是否需要签名,如果是私有读的Bucket,那么该URL需要带上签名才能访问

Return Value

object URL

Discussion

需要注意的是,如果通过该接口来生成带签名的URL的话,因为签名可能是在服务器生成的,该方法是同步方法, 可能因为网络请求阻塞,建议不要在主线程里调用。

此外, 传入的Object需要是URLEncode后的结果。

Declared In

QCloudCOSXMLService.h

+ hasServiceForKey:

检查是否存在key对应的service

+ (BOOL)hasServiceForKey:(NSString *)key

Parameters

key

key

Return Value

存在与否

Declared In

QCloudCOSXMLService.h

Manager Methods

– GetObjectACL:

获取 COS 对象的访问权限信息(Access Control List, ACL)的方法.

- (void)GetObjectACL:(QCloudGetObjectACLRequest *)request

Discussion

Bucket 的持有者可获取该 Bucket 下的某个对象的 ACL 信息,如被授权者以及被授权的信息. ACL 权限包括读、写、读写权限.

关于获取 COS 对象的 ACL 接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7744.

cos iOS SDK 中获取 COS 对象的 ACL 的方法具体步骤如下:

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

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

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

示例

@code

 QCloudGetObjectACLRequest* request = [QCloudGetObjectACLRequest new];
 request.bucket = @“bucketName"; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 request.object = @"objectName";
 [request setFinishBlock:^(QCloudACLPolicy * _Nonnull policy, NSError * _Nonnull error) {
 //从 QCloudACLPolicy 对象中获取封装好的 ACL 的具体信息
 }];
 [[QCloudCOSXMLService defaultCOSXML] GetObjectACL:request];

Declared In

QCloudCOSXMLService+Manager.h

– PutObjectACL:

设置 COS 对象的访问权限信息(Access Control List, ACL)的方法.

- (void)PutObjectACL:(QCloudPutObjectACLRequest *)request

Discussion

ACL权限包括读、写、读写权限. COS 对象的 ACL 可以通过 header头部:"x-cos-acl","x-cos-grant-read","x-cos-grant-write", “x-cos-grant-full-control” 传入 ACL 信息,或者通过 Body 以 XML 格式传入 ACL 信息.这两种方式只 能选择其中一种,否则引起冲突. 传入新的 ACL 将覆盖原有 ACL信息.ACL策略数上限1000,建议用户不要每个上传文件都设置 ACL.

关于设置 COS 对象的ACL接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7748.

cos iOS SDK 中设置 COS 对象的 ACL 的方法具体步骤如下:

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

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

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

示例

@code

 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];

Declared In

QCloudCOSXMLService+Manager.h

– DeleteObject:

删除 COS 上单个对象的方法.

- (void)DeleteObject:(QCloudDeleteObjectRequest *)request

Discussion

COS 支持直接删除一个或多个对象,当仅需要删除一个对象时,只需要提供对象的名称(即对象键)即可.

关于删除 COS 上单个对象的具体描述,请查看 https://cloud.tencent.com/document/product/436/14119.

关于删除 COS 上单个对象接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7743.

cos iOS SDK 中删除 COS 上单个对象请求的方法具体步骤如下:

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

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

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

示例

@code

 QCloudDeleteObjectRequest* deleteObjectRequest = [QCloudDeleteObjectRequest new];
 deleteObjectRequest.bucket = self.bucket;
 deleteObjectRequest.object = @"objectName";
 [deleteObjectRequest setFinishBlock:^(id outputObject, NSError *error) {
 //additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] DeleteObject:deleteObjectRequest];

Declared In

QCloudCOSXMLService+Manager.h

– DeleteMultipleObject:

批量删除 COS 对象的方法.

- (void)DeleteMultipleObject:(QCloudDeleteMultipleObjectRequest *)request

Discussion

COS 支持批量删除指定 Bucket 中 对象,单次请求最大支持批量删除 1000 个 对象. 请求中删除一个不存在的对象,仍然认为是成功的. 对于响应结果,COS提供 Verbose 和 Quiet 两种模式:Verbose 模式将返回每个对象的删除结果;Quiet 模式只返回删除报错的对象信息. 请求必须携带 Content-MD5 用来校验请求Body 的完整性.

关于批量删除 COS 对象接口的描述,请查看https://cloud.tencent.com/document/product/436/8289.

cos iOS SDK 中批量删除 COS 对象的方法具体步骤如下:

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

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

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

示例

@code

 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];

Declared In

QCloudCOSXMLService+Manager.h

– OptionsObject:

COS 对象的跨域访问配置预请求的方法.

- (void)OptionsObject:(QCloudOptionsObjectRequest *)request

Discussion

跨域访问配置的预请求是指在发送跨域请求之前会发送一个 OPTIONS 请求并带上特定的来源域,HTTP 方法 和 header 信息等给 COS,以决定是否可以发送真正的跨域请求. 当跨域访问配置不存在时,请求返回403 Forbidden. 跨域访问配置可以通过 putBucketCORS(PutBucketCORSRequest) 或者 putBucketCORSAsync(PutBucketCORSRequest, CosXmlResultListener) 方法来开启 Bucket 的跨域访问 支持.

关于COS 对象的跨域访问配置预请求接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8288.

cos iOS SDK 中发起COS 对象的跨域访问配置预请求的方法具体步骤如下:

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

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

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

示例

@code

 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];

Declared In

QCloudCOSXMLService+Manager.h

– PutBucket:

创建存储桶(Bucket)的方法.

- (void)PutBucket:(QCloudPutBucketRequest *)request

Discussion

在开始使用 COS 时,需要在指定的账号下先创建一个 Bucket 以便于对象的使用和管理. 并指定 Bucket 所属的地域.创建 Bucket 的用户默认成为 Bucket 的持有者.若创建 Bucket 时没有指定访问权限,则默认 为私有读写(private)权限.

可用地域,可以查看https://cloud.tencent.com/document/product/436/6224.

关于创建 Bucket 描述,请查看 https://cloud.tencent.com/document/product/436/14106.

关于创建存储桶(Bucket)接口的具体 描述,请查看 https://cloud.tencent.com/document/product/436/7738.

cos iOS SDK 中创建 Bucket的方法具体步骤如下:

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

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

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

示例

@code

 QCloudPutBucketRequest* request = [QCloudPutBucketRequest new];
 request.bucket = bucketName; //additional actions after finishing
 [request setFinishBlock:^(id outputObject, NSError* error) {

 }];
 [[QCloudCOSXMLService defaultCOSXML] PutBucket:request];

Declared In

QCloudCOSXMLService+Manager.h

– GetBucket:

查询存储桶(Bucket) 下的部分或者全部对象的方法.

- (void)GetBucket:(QCloudGetBucketRequest *)request

Discussion

COS 支持列出指定 Bucket 下的部分或者全部对象.

每次默认返回的最大条目数为 1000 条.

如果无法一次返回所有的对象,则返回结果中的 IsTruncated 为 true,同时会附加一个 NextMarker 字段,提示下 一个条目的起点.

若一次请求,已经返回了全部对象,则不会有 NextMarker 这个字段,同时 IsTruncated 为 false.

若把 prefix 设置为某个文件夹的全路径名,则可以列出以此 prefix 为开头的文件,即该文件 夹下递归的所有文件和子文件夹.

如果再设置 delimiter 定界符为 “/”,则只列出该文件夹下的文件,子文件夹下递归的文件和文件夹名 将不被列出.而子文件夹名将会以 CommonPrefix 的形式给出.

关于查询Bucket 下的部分或者全部对象接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7734.

cos iOS SDK 中查询 Bucket 下的部分或者全部对象的方法具体步骤如下:

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

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

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

示例

@code

 QCloudGetBucketRequest* request = [QCloudGetBucketRequest new];
 request.bucket = @“testBucket-123456789”; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 request.maxKeys = 1000;
 [request setFinishBlock:^(QCloudListBucketResult * result, NSError*   error) {
 //additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] GetBucket:request];

Declared In

QCloudCOSXMLService+Manager.h

– GetBucketACL:

获取存储桶(Bucket) 的访问权限信息(Access Control List, ACL)的方法.

- (void)GetBucketACL:(QCloudGetBucketACLRequest *)request

Discussion

ACL 权限包括读、写、读写权限. COS 中 Bucket 是有访问权限控制的.可以通过获取 Bucket 的 ACL 表(putBucketACL(PutBucketACLRequest)),来查看那些用户拥有 Bucket 访 问权限.

关于获取 Bucket 的 ACL 接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7733.

cos iOS SDK 中获取 Bucket 的 ACL 的方法具体步骤如下:

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

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

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

示例

@code

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

 [[QCloudCOSXMLService defaultCOSXML] GetBucketACL:getBucketACl];

Declared In

QCloudCOSXMLService+Manager.h

– GetBucketCORS:

查询存储桶(Bucket) 跨域访问配置信息的方法.

- (void)GetBucketCORS:(QCloudGetBucketCORSRequest *)request

Discussion

COS 支持查询当前 Bucket 跨域访问配置信息,以确定是否配置跨域信息.当跨域访问配置不存在时,请求 返回403 Forbidden. 跨域访问配置可以通过 putBucketCORS(PutBucketCORSRequest) 或者 putBucketCORSAsync(PutBucketCORSRequest, CosXmlResultListener) 方法来开启 Bucket 的跨域访问 支持.

关于查询 Bucket 跨域访问配置信息接口的具体描述, 请查看 https://cloud.tencent.com/document/product/436/8274.

cos iOS SDK 中查询 Bucket 跨域访问配置信息的方法具体步骤如下:

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

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

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

示例

@code

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

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

 [[QCloudCOSXMLService defaultCOSXML] GetBucketCORS:corsReqeust];

Declared In

QCloudCOSXMLService+Manager.h

– GetBucketLocation:

获取存储桶(Bucket) 所在的地域信息的方法.

- (void)GetBucketLocation:(QCloudGetBucketLocationRequest *)request

Discussion

在创建 Bucket 时,需要指定所属该 Bucket 所属地域信息.

COS 支持的地域信息,可查看https://cloud.tencent.com/document/product/436/6224.

关于获取 Bucket 所在的地域信息接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8275.

cos iOS SDK 中获取 Bucket 所在的地域信息的方法具体步骤如下:

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

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

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

示例

@code

 QCloudGetBucketLocationRequest* locationReq = [QCloudGetBucketLocationRequest new];
 locationReq.bucket = @"bucketName";//存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 __block QCloudBucketLocationConstraint* location;
 [locationReq setFinishBlock:^(QCloudBucketLocationConstraint * _Nonnull result, NSError * _Nonnull error) {
 location = result;
 }];
 [[QCloudCOSXMLService defaultCOSXML] GetBucketLocation:locationReq];

Declared In

QCloudCOSXMLService+Manager.h

– GetBucketLifecycle:

查询存储桶(Bucket) 的生命周期配置的方法.

- (void)GetBucketLifecycle:(QCloudGetBucketLifecycleRequest *)request

Discussion

COS 支持以生命周期配置的方式来管理 Bucket 中对象的生命周期,生命周期配置包含一个或多个将 应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作),请参阅 putBucketLifecycle(PutBucketLifecycleRequest).

关于查询 Bucket 的生命周期配置接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8278.

cos iOS SDK 中查询 Bucket 的生命周期配置的方法具体步骤如下:

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

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

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

示例

@code

 QCloudGetBucketLifecycleRequest* request = [QCloudGetBucketLifecycleRequest new];
 request.bucket = bucketName; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [request setFinishBlock:^(QCloudLifecycleConfiguration* result,NSError* error) {
 //设置完成回调
 }];
 [[QCloudCOSXMLService defaultCOSXML] GetBucketLifecycle:request];

Declared In

QCloudCOSXMLService+Manager.h

– PutBucketACL:

设置存储桶(Bucket) 的访问权限(Access Control List, ACL)的方法.

- (void)PutBucketACL:(QCloudPutBucketACLRequest *)request

Discussion

ACL 权限包括读、写、读写权限. 写入 Bucket 的 ACL 可以通过 header头部:"x-cos-acl","x-cos-grant-read","x-cos-grant-write", “x-cos-grant-full-control” 传入 ACL 信息,或者通过 Body 以 XML 格式传入 ACL 信息.这两种方式只 能选择其中一种,否则引起冲突. 传入新的 ACL 将覆盖原有 ACL信息. 私有 Bucket 可以下可以给某个文件夹设置成公有,那么该文件夹下的文件都是公有;但是把文件夹设置成私有后,在该文件夹下的文件设置 的公有属性,不会生效.

关于设置 Bucket 的ACL接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7737.

cos iOS SDK 中设置 Bucket 的ACL的方法具体步骤如下:

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

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

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

示例

@code

 QCloudPutBucketACLRequest* putACL = [QCloudPutBucketACLRequest new];
 NSString* appID = kAppID;
 NSString *ownerIdentifier = [NSString stringWithFormat:@"qcs::cam::uin/%@:uin/%@", appID, appID];
 NSString *grantString = [NSString stringWithFormat:@"id=\"%@\"",ownerIdentifier];
 putACL.accessControlList = @"private";
 putACL.grantFullControl = grantString;
 putACL.bucket = bucketName; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [putACL setFinishBlock:^(id outputObject, NSError *error) {
 //additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] PutBucketACL:putACL];

Declared In

QCloudCOSXMLService+Manager.h

– PutBucketCORS:

设置存储桶(Bucket) 的跨域配置信息的方法.

- (void)PutBucketCORS:(QCloudPutBucketCORSRequest *)request

Discussion

跨域访问配置的预请求是指在发送跨域请求之前会发送一个 OPTIONS 请求并带上特定的来源域,HTTP 方 法和 header 信息等给 COS,以决定是否可以发送真正的跨域请求. 当跨域访问配置不存在时,请求返回403 Forbidden.

默认情况下,Bucket的持有者可以直接配置 Bucket的跨域信息 ,Bucket 持有者也可以将配置权限授予其他用户.新的配置是覆盖当前的所有配置信 息,而不是新增一条配置.可以通过传入 XML 格式的配置文件来实现配置,文件大小限制为64 KB.

关于设置 Bucket 的跨域配置信息接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/8279.

cos iOS SDK 中设置 Bucket 的跨域配置信息的方法具体步骤如下:

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

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

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

示例

@code

 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];

Declared In

QCloudCOSXMLService+Manager.h

– PutBucketLifecycle:

设置存储桶(Bucket) 生命周期配置的方法.

- (void)PutBucketLifecycle:(QCloudPutBucketLifecycleRequest *)request

Discussion

COS 支持以生命周期配置的方式来管理 Bucket 中对象的生命周期. 如果该 Bucket 已配置生命周期,新的配置的同时则会覆盖原有的配置. 生命周期配置包含一个或多个将应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作)。这些操作分为以下两种:转换操作,过期操作.

转换操作,定义对象转换为另一个存储类的时间(例如,您可以选择在对象创建 30 天后将其转换为低频存储类别,同 时也支持将数据沉降到归档存储类别.

过期操作,指定 Object 的过期时间,COS 将会自动为用户删除过期的 Object.

关于Bucket 生命周期配置接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/8280

cos iOS SDK 中Bucket 生命周期配置的方法具体步骤如下:

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

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

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

示例

@code

 QCloudPutBucketLifecycleRequest* request = [QCloudPutBucketLifecycleRequest new];
 request.bucket = bukcetName;
 __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];

Declared In

QCloudCOSXMLService+Manager.h

– DeleteBucketCORS:

删除跨域访问配置信息的方法.

- (void)DeleteBucketCORS:(QCloudDeleteBucketCORSRequest *)request

Discussion

若是 Bucket 不需要支持跨域访问配置,可以调用此接口删除已配置的跨域访问信息. 跨域访问配置可以通过 putBucketCORS(PutBucketCORSRequest) 或者 putBucketCORSAsync(PutBucketCORSRequest, CosXmlResultListener) 方法来开启 Bucket 的跨域访问 支持.

关于删除跨域访问配置信息接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8283.

cos ios SDK 中删除跨域访问配置信息的方法具体步骤如下:

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

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

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

示例

@code

 QCloudDeleteBucketCORSRequest* deleteCORS = [QCloudDeleteBucketCORSRequest new];
 deleteCORS.bucket = bucketName; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 __block NSError* localError;
 XCTestExpectation* exp = [self expectationWithDescription:@"putacl"];
 [deleteCORS setFinishBlock:^(id outputObject, NSError *error) {
 //additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] DeleteBucketCORS:deleteCORS];

Declared In

QCloudCOSXMLService+Manager.h

– DeleteBucketLifeCycle:

删除存储桶(Bucket) 的生命周期配置的方法.

- (void)DeleteBucketLifeCycle:(QCloudDeleteBucketLifeCycleRequest *)request

Discussion

COS 支持删除已配置的 Bucket 的生命周期列表. COS 支持以生命周期配置的方式来管理 Bucket 中 对象的生命周期,生命周期配置包含一个或多个将 应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作),请参阅 putBucketLifecycle(PutBucketLifecycleRequest).

关于删除 Bucket 的生命周期配置接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8284.

cos iOS SDK 中删除 Bucket 的生命周期配置的方法具体步骤如下:

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

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

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

示例

@code

 QCloudDeleteBucketLifeCycleRequest* request = [[QCloudDeleteBucketLifeCycleRequest alloc ] init];
 request.bucket = bucketName; // //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [request setFinishBlock:^(QCloudLifecycleConfiguration* deleteResult, NSError* deleteError) {
 // additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] DeleteBucketLifeCycle:request];
 }

Declared In

QCloudCOSXMLService+Manager.h

– DeleteBucket:

删除存储桶 (Bucket)的方法.

- (void)DeleteBucket:(QCloudDeleteBucketRequest *)request

Discussion

COS 目前仅支持删除已经清空的 Bucket,如果 Bucket 中仍有对象,将会删除失败. 因此,在执行删除 Bucket 前,需确保 Bucket 内已经没有对象. 删除 Bucket 时,还需要确保操作的身份已被授权该操作,并确认 传入了正确的存储桶名称和地域参数, 请参阅 putBucket(PutBucketRequest).

关于删除 Bucket 的描述,请查看 https://cloud.tencent.com/document/product/436/14105.

关于删除 Bucket 接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7732.

cos iOS SDK 中删除 Bucket 的方法具体步骤如下:

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

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

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

示例

@code

 QCloudDeleteBucketRequest* request = [[QCloudDeleteBucketRequest alloc ] init];
 request.bucket = bucketName;  //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [request setFinishBlock:^(id outputObject,NSError*error) {
 //additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] DeleteBucket:request];

Declared In

QCloudCOSXMLService+Manager.h

– HeadBucket:

存储桶(Bucket) 是否存在的方法.

- (void)HeadBucket:(QCloudHeadBucketRequest *)request

Discussion

在开始使用 COS 时,需要确认该 Bucket 是否存在,是否有权限访问.若不存在,则可以调用putBucket(PutBucketRequest) 创建.

关于确认该 Bucket 是否存在,是否有权限访问接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7735.

cos iOS SDK 中Bucket 是否存在的方法具体步骤如下:

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

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

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

示例

@code

 QCloudHeadBucketRequest* request = [QCloudHeadBucketRequest new];
 request.bucket = bucketName; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [request setFinishBlock:^(id outputObject, NSError* error) {
 //设置完成回调。如果没有error,则可以正常访问bucket。如果有error,可以从error code和messasge中获取具体的失败原因。
 }];
 [[QCloudCOSXMLService defaultCOSXML] HeadBucket:request];

Declared In

QCloudCOSXMLService+Manager.h

– ListBucketMultipartUploads:

查询存储桶(Bucket)中正在进行中的分块上传对象的方法.

- (void)ListBucketMultipartUploads:(QCloudListBucketMultipartUploadsRequest *)request

Discussion

COS 支持查询 Bucket 中有哪些正在进行中的分块上传对象,单次请求操作最多列出 1000 个正在进行中的 分块上传对象.

关于查询 Bucket 中正在进行中的分块上传对象接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7736.

cos iOS SDK 中查询 Bucket 中正在进行中的分块上传对象的方法具体步骤如下:

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

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

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

示例

@code

 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];

Declared In

QCloudCOSXMLService+Manager.h

– PutBucketVersioning:

存储桶(Bucket)版本控制的方法.

- (void)PutBucketVersioning:(QCloudPutBucketVersioningRequest *)request

Discussion

版本管理功能一经打开,只能暂停,不能关闭. 通过版本控制,可以在一个 Bucket 中保留一个对象的多个版本. 版本控制可以防止意外覆盖和删除对象,以便检索早期版本的对象. 默认情况下,版本控制功能处于禁用状态,需要主动去启用或者暂停(Enabled 或者 Suspended).

cos iOS SDK 中 Bucket 版本控制启用或者暂停的方法具体步骤如下:

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

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

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

示例

@code

 QCloudPutBucketVersioningRequest* request = [[QCloudPutBucketVersioningRequest alloc] init];
 request.bucket = bucketName;//存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 QCloudBucketVersioningConfiguration* configuration = [[QCloudBucketVersioningConfiguration alloc] init];
 request.configuration = configuration;
 configuration.status = QCloudCOSBucketVersioningStatusEnabled;
 [request setFinishBlock:^(id outputObject, NSError* error) {
 //设置完成回调
 }];
 [[QCloudCOSXMLService defaultCOSXML] PutBucketVersioning:request];

Declared In

QCloudCOSXMLService+Manager.h

– GetBucketVersioning:

获取存储桶(Bucket)版本控制信息的方法.

- (void)GetBucketVersioning:(QCloudGetBucketVersioningRequest *)request

Discussion

通过查询版本控制信息,可以得知该 Bucket 的版本控制功能是处于禁用状态还是启用状态(Enabled 或者 Suspended), 开启版本控制功能,可参考putBucketVersioning(PutBucketVersioningRequest).

cos iOS SDK 中获取 Bucket 版本控制信息的方法具体步骤如下:

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

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

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

示例

@code

 QCloudGetBucketVersioningRequest* request = [[QCloudGetBucketVersioningRequest alloc] init];
 request.bucket = @"bucketName";  //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [request setFinishBlock:^(QCloudBucketVersioningConfiguration* result, NSError* error) {
 //设置完成回调
 }];
 [[QCloudCOSXMLService defaultCOSXML] GetBucketVersioning:request];

Declared In

QCloudCOSXMLService+Manager.h

– PutBucketRelication:

配置跨区域复制的方法.

- (void)PutBucketRelication:(QCloudPutBucketReplicationRequest *)request

Discussion

跨区域复制是支持不同区域 Bucket 自动异步复制对象.注意,不能是同区域的 Bucket, 且源 Bucket 和目 标 Bucket 必须已启用版本控制putBucketVersioning(PutBucketVersioningRequest).

cos iOS SDK 中配置跨区域复制的方法具体步骤如下:

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

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

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

示例

@code

 QCloudPutBucketReplicationRequest* request = [[QCloudPutBucketReplicationRequest alloc] init];
 request.bucket = bucketName; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 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];
 NSString* destinationBucket = @"destinationBucket";
 NSString* region = @"destinationRegion"
 destination.bucket = [NSString stringWithFormat:@"qcs:id/0:cos:%@:appid/%@:%@",@"region",@"appid",@"destinationBucket"];
 rule.destination = destination;
 configuration.rule = @[rule];
 request.configuation = configuration;
 [request setFinishBlock:^(id outputObject, NSError* error) {
 //设置完成回调
 }];
 [[QCloudCOSXMLService defaultCOSXML] PutBucketRelication:request];

Declared In

QCloudCOSXMLService+Manager.h

– DeleteBucketReplication:

删除跨区域复制配置的方法.

- (void)DeleteBucketReplication:(QCloudDeleteBucketReplicationRequest *)request

Discussion

当不需要进行跨区域复制时,可以删除 Bucket 的跨区域复制配置. 跨区域复制,可以查阅putBucketReplication(PutBucketReplicationRequest)

cos iOS SDK 中删除跨区域复制配置的方法具体步骤如下:

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

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

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

示例

@code

 //delete bucket replication
 QCloudDeleteBucketReplicationRequest* request = [[QCloudDeleteBucketReplicationRequest alloc] init];
 request.bucket = @"bucketName";  //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [request setFinishBlock:^(id outputObject, NSError* error) {

 }];
 [[QCloudCOSXMLService defaultCOSXML] DeleteBucketReplication:request];

Declared In

QCloudCOSXMLService+Manager.h

– GetService:

获取所属账户的所有存储空间列表的方法.

- (void)GetService:(QCloudGetServiceRequest *)request

Discussion

通过使用帯 Authorization 签名认证的请求,可以获取签名中 APPID 所属账户的所有存储空间列表 (Bucket list).

关于获取所有存储空间列表接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8291.

cos iOS SDK 中获取所属账户的所有存储空间列表的方法具体步骤如下:

  1. 实例化 QCloudGetServiceRequest。

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

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

示例

@code

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

Declared In

QCloudCOSXMLService+Manager.h

– GetBucketLogging:

获取跨区域复制配置信息的方法.

- (void)GetBucketLogging:(QCloudGetBucketLoggingRequest *)request

Discussion

跨区域复制是支持不同区域 Bucket 自动复制对象, 请查阅putBucketReplication(PutBucketReplicationRequest).

cos iOS SDK 中获取跨区域复制配置信息的方法具体步骤如下:

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

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

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

示例

@code

 QCloudGetBucketReplicationRequest* request = [[QCloudGetBucketReplicationRequest alloc] init];
 request.bucket = bucketBame; // //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 [request setFinishBlock:^(QCloudBucketReplicationConfiguation* result, NSError* error) {
 //设置完成回调
 }];
 [[QCloudCOSXMLService defaultCOSXML] GetBucketReplication:request];

Declared In

QCloudCOSXMLService+Manager.h

– doesBucketExist:

查询 Bucket 是否存在。注意该方法是同步方法,会阻塞当前线程直到返回结果,请勿在主线程内调用。

- (BOOL)doesBucketExist:(NSString *)bucketName

Parameters

bucketName

bucket

Return Value

bucket 是否存在。如果返回YES那说明bucket一定存在,但返回 NO 的时候并不一定是因为 Bucket 不存在,还有可能因为超时、签名错误等问题导致请求失败了。

Declared In

QCloudCOSXMLService+Manager.h

– doesObjectExistWithBucket:object:

查询 Object 是否存在。注意该方法是同步方法,会阻塞当前线程直到返回结果,请勿在主线程内调用。

- (BOOL)doesObjectExistWithBucket:(NSString *)bucket object:(NSString *)objectName

Parameters

bucket

bucket

objectName

object

Return Value

object 是否存在。如果返回YES那说明bucket一定存在,但返回 NO 的时候并不一定是因为 Bucket 不存在,还有可能因为超时、签名错误等问题导致请求失败了。

Discussion

该方法返回不存在可能存在两种情况: 1. Bucket 并不存在。 2. Bucket 存在,但 Object 并不存在。

Declared In

QCloudCOSXMLService+Manager.h

– deleteObjectWithBucket:object:

直接删除对象的接口。注意该方法是同步方法,会阻塞当前线程直到返回完成,请勿在主线程内调用。

- (void)deleteObjectWithBucket:(NSString *)bucket object:(NSString *)objectName

Parameters

bucket

bucket

objectName

object

Declared In

QCloudCOSXMLService+Manager.h

– deleteVersionWithBucket:object:version:

删除多版本中指定版本对象的接口。注意该方法是同步方法,会阻塞当前线程直到返回完成,请勿在主线程内调用。

- (void)deleteVersionWithBucket:(NSString *)bucket object:(NSString *)object version:(NSString *)versionID

Parameters

bucket

bucket

object

object

versionID

versionID

Declared In

QCloudCOSXMLService+Manager.h

– changeObjectStorageClassWithBucket:object:storageClass:

更改对象的存储级别,内部通过 CopyObject 操作来实现。注意该方法是同步方法,会阻塞当前线程直到返回完成,请勿在主线程内调用。

- (void)changeObjectStorageClassWithBucket:(NSString *)bucket object:(NSString *)object storageClass:(QCloudCOSStorageClass)storageClass

Parameters

bucket

bucket

object

object

storageClass

存储级别

Declared In

QCloudCOSXMLService+Manager.h

– updateObjectMedaWithBucket:object:meta:

更改对象的元数据,内部通过 CopyObject 操作来实现。注意该方法是同步方法,会阻塞当前线程直到返回完成,请勿在主线程内调用。

- (void)updateObjectMedaWithBucket:(NSString *)bucket object:(NSString *)object meta:(NSDictionary *)meta

Parameters

bucket

bucket

object

object

meta

元数据,以键值对的方式传入。

Declared In

QCloudCOSXMLService+Manager.h

Transfer Methods

– PutObject:

简单上传的方法.

- (void)PutObject:(QCloudPutObjectRequest *)request

Discussion

简单上传主要适用于在单个请求中上传一个小于 5 GB 大小的对象. 对于大于 5 GB 的对象(或者在高带宽或弱网络环境中) 优先使用分片上传的方式 (https://cloud.tencent.com/document/product/436/14112)..)

关于简单上传的具体描述,请查看 https://cloud.tencent.com/document/product/436/14113.

关于简单上传接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7749.

cos iOS SDK 中简单上传请求的方法具体步骤如下:

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

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

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

示例

@code

 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];

Declared In

QCloudCOSXMLService+Transfer.h

– GetObject:

下载 COS 对象的方法.

- (void)GetObject:(QCloudGetObjectRequest *)request

Discussion

可以直接发起 GET 请求获取 COS 中完整的对象数据, 或者在 GET 请求 中传入 Range 请求头部获取对象的部分内容. 获取COS 对象的同时,对象的元数据将会作为 HTTP 响应头部随对象内容一同返回,COS 支持GET 请求时 使用 URL 参数的方式覆盖响应的部分元数据值,例如覆盖 Content-iDisposition 的响应值.

关于获取 COS 对象的具体描述,请查看 https://cloud.tencent.com/document/product/436/14115.

关于获取 COS 对象的接口描述,请查看 https://cloud.tencent.com/document/product/436/7753.

cos iOS SDK 中获取 COS 对象请求的方法具体步骤如下:

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

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

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

示例

@code

 QCloudGetObjectRequest* request = [[QCloudGetObjectRequest alloc] init];
 request.bucket = @"bucketName"; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 request.object = @"objectName";;
 [request setFinishBlock:^(id outputObject, NSError *error) {
 //additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] GetObject:request];

Declared In

QCloudCOSXMLService+Transfer.h

– InitiateMultipartUpload:

初始化分块上传的方法.

- (void)InitiateMultipartUpload:(QCloudInitiateMultipartUploadRequest *)request

Discussion

使用分块上传对象时,首先要进行初始化分片上传操作,获取对应分块上传的 uploadId,用于后续上传操 作. 分块上传适合于在弱网络或高带宽环境下上传较大的对象.SDK 支持自行切分对象并分别调用uploadPart(UploadPartRequest) 或者uploadPartAsync(UploadPartRequest, CosXmlResultListener)上传各 个分块.

关于分块上传的描述,请查看 https://cloud.tencent.com/document/product/436/14112.

关于初始化分块上传的描述,请查看 https://cloud.tencent.com/document/product/436/7746.

cos iOS SDK 中初始化分块上传请求的方法具体步骤如下:

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

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

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

示例

@code

 QCloudInitiateMultipartUploadRequest* initrequest = [QCloudInitiateMultipartUploadRequest new];
 initrequest.bucket = @"bucketName"; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 initrequest.object = @"objectName"

 __block QCloudInitiateMultipartUploadResult* initResult;
 [initrequest setFinishBlock:^(QCloudInitiateMultipartUploadResult* outputObject, NSError *error) {
 initResult = outputObject;
 }];
 [[QCloudCOSXMLService defaultCOSXML] InitiateMultipartUpload:initrequest];

Declared In

QCloudCOSXMLService+Transfer.h

– UploadPart:

上传一个分片块的方法.

- (void)UploadPart:(QCloudUploadPartRequest *)request

Discussion

使用分块上传时,可将对象切分成一个个分块的方式上传到 COS,每个分块上传需要携带分块号(partNumber) 和 uploadId(initMultipartUpload(InitMultipartUploadRequest)), 每个分块大小为 1 MB 到 5 GB , 最后一个分块可以小于 1 MB, 若传入 uploadId 和 partNumber都相同, 后传入的块将覆盖之前传入的块,且支持乱序上传.

关于分块上传的描述,请查看 https://cloud.tencent.com/document/product/436/14112.

关于上传一个对象的分块接口的描述,请查看 https://cloud.tencent.com/document/product/436/7750.

cos iOS SDK 中上传一个对象某个分片块请求的方法具体步骤如下:

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

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

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

示例

@code

 QCloudUploadPartRequest *partRequest = [QCloudUploadPartRequest new];
 partRequest.bucket = @"bucketName";
 partRequest.object = @"object";
 partRequest.uploadId = @"uploadId"; //标识本次分块上传的 ID;
 使用 Initiate Multipart Upload 接口初始化分片上传时会得到一个 uploadId,该 ID 不但唯一标识这一分块数据,

也标识了这分块数据在整个文件内的相对位置 partRequest.partNumber = 1; //标识本次分块上传的编号 [partRequest setFinishBlock:^(QCloudUploadPartResult * Nonnull result, NSError * Nonnull error) { }]; [[QCloudCOSXMLService defaultCOSXML]UploadPart:partRequest];

Declared In

QCloudCOSXMLService+Transfer.h

– ListMultipart:

查询特定分块上传中的已上传的块的方法.

- (void)ListMultipart:(QCloudListMultipartRequest *)request

Discussion

COS 支持查询特定分块上传中的已上传的块, 即可以 罗列出指定 UploadId 所属的所有已上传成功的分块. 因此,基于此可以完成续传功能.

关于分块上传的描述,请查看 https://cloud.tencent.com/document/product/436/14112,

关于查询特定分块上传中的已上传块接口的描述,请查看 https://cloud.tencent.com/document/product/436/7747.

cos iOS SDK 中查询特定分块上传中的已上传块请求的方法具体步骤如下:

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

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

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

示例

@code

 QCloudListMultipartRequest* request = [[QCloudListMultipartRequest alloc] init];
 request.bucket = @"bucketName"; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 request.object = @"objectName";
 request.uploadId = @"uploadID";
 [request setFinishBlock:^(QCloudListPartsResult * _Nonnull result, NSError * _Nonnull error) {
 //additional actions after finishing
 }];
 [[QCloudCOSXMLService defaultCOSXML] ListMultipart:request];

Declared In

QCloudCOSXMLService+Transfer.h

– CompleteMultipartUpload:

完成整个分块上传的方法.

- (void)CompleteMultipartUpload:(QCloudCompleteMultipartUploadRequest *)request

Discussion

当使用分块上传(uploadPart(UploadPartRequest))完对象的所有块以后,必须调用该 completeMultiUpload(CompleteMultiUploadRequest) 或者 completeMultiUploadAsync(CompleteMultiUploadRequest, CosXmlResultListener) 来完成整个文件的分块上传.且在该请求的 Body 中需要给出每一个块的 PartNumber 和 ETag,用来校验块的准 确性.

分块上传适合于在弱网络或高带宽环境下上传较大的对象.SDK 支持自行切分对象并分别调用uploadPart(UploadPartRequest)上传各 个分块.

关于分块上传的描述,请查看 https://cloud.tencent.com/document/product/436/14112.

关于完成整个分片上传接口的描述,请查看 https://cloud.tencent.com/document/product/436/7742.

cos iOS SDK 中完成整个分块上传请求的同步方法具体步骤如下:

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

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

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

示例

@code

 QCloudCompleteMultipartUploadRequest *completeRequst = [QCloudCompleteMultipartUploadRequest new];
 completeRequst.bucket = @"bucketName";
 completeRequst.object = @"objectName";
 completeRequst.uploadId = @"uploadId"; //本次分片上传的UploadID
 [completeRequst setFinishBlock:^(QCloudUploadObjectResult * _Nonnull result, NSError * _Nonnull error) {

 }];
 [[QCloudCOSXMLService defaultCOSXML] CompleteMultipartUpload:completeRequst];

Declared In

QCloudCOSXMLService+Transfer.h

– AbortMultipfartUpload:

/存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)

- (void)AbortMultipfartUpload:(QCloudAbortMultipfartUploadRequest *)request

Declared In

QCloudCOSXMLService+Transfer.h

– HeadObject:

获取 COS 对象的元数据信息(meta data)的方法.

- (void)HeadObject:(QCloudHeadObjectRequest *)request

Discussion

获取 COS 对象的元数据信息,需要与 Get 的权限一致.且请求是不返回消息体的.若请求中需要设置 If-Modified-Since 头部,则统一采用 GMT(RFC822) 时间格式,例如:Tue, 22 Oct 2017 01:35:21 GMT. 如果对象不存在,则 返回404.

关于获取 COS 对象的元数据信息接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7745.

cos iOS SDK 中获取 COS 对象的元数据信息的方法具体步骤如下:

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

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

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

示例

@code

 QCloudHeadObjectRequest* headerRequest = [QCloudHeadObjectRequest new];
    //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
 headerRequest.bucket = @"bucketName";
 headerRequest.object = @"objectName";
 __block id resultError;
 [headerRequest setFinishBlock:^(NSDictionary* result, NSError *error) {
 resultError = error;
 }];

 [[QCloudCOSXMLService defaultCOSXML] HeadObject:headerRequest];

Declared In

QCloudCOSXMLService+Transfer.h

– PutObjectCopy:

简单复制对象的方法.

- (void)PutObjectCopy:(QCloudPutObjectCopyRequest *)request

Discussion

COS 中复制对象可以完成如下功能:

创建一个新的对象副本.

复制对象并更名,删除原始对象,实现重命名

修改对象的存储类型,在复制时选择相同的源和目标对象键,修改存储类型.

在不同的腾讯云 COS 地域复制对象.

修改对象的元数据,在复制时选择相同的源和目标对象键,并修改其中的元数据,复制对象时,默认将继承原对象的元数据, 但创建日期将会按新对象的时间计算.

当复制的对象小于等于 5 GB ,可以使用简单复制(https://cloud.tencent.com/document/product/436/14117)..)

当复制对象超过 5 GB 时,必须使用分块复制(https://cloud.tencent.com/document/product/436/14118 ) 来实现复制.

关于简单复制接口的具体描述,请查看https://cloud.tencent.com/document/product/436/10881.

cos iOS SDK 中简单复制对象的方法具体步骤如下:

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

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

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

示例

@code

 QCloudPutObjectCopyRequest* request = [[QCloudPutObjectCopyRequest alloc] init];
 request.bucket = @"bucketName";
 request.object = @"objectName";
 request.objectCopySource = @"objectCopySource";

 [request setFinishBlock:^(QCloudCopyObjectResult* result, NSError* error) {
 }];
 [[QCloudCOSXMLService defaultCOSXML] PutObjectCopy:request];

Declared In

QCloudCOSXMLService+Transfer.h

– UploadPartCopy:

分块复制的方法.

- (void)UploadPartCopy:(QCloudUploadPartCopyRequest *)request

Discussion

COS 中复制对象可以完成如下功能:

创建一个新的对象副本.

复制对象并更名,删除原始对象,实现重命名

修改对象的存储类型,在复制时选择相同的源和目标对象键,修改存储类型.

在不同的腾讯云 COS 地域复制对象.

修改对象的元数据,在复制时选择相同的源和目标对象键,并修改其中的元数据,复制对象时,默认将继承原对象的元数据, 但创建日期将会按新对象的时间计算.

当复制的对象小于等于 5 GB ,可以使用简单复制(https://cloud.tencent.com/document/product/436/14117)..)

当复制对象超过 5 GB 时,必须使用分块复制(https://cloud.tencent.com/document/product/436/14118 ) 来实现复制.

关于分块复制接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8287.

cos iOS SDK 中分块复制的方法具体步骤如下:

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

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

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

示例

@code

 QCloudUploadPartCopyRequest* request = [[QCloudUploadPartCopyRequest alloc] init];
 request.bucket = @"bucketName";
 request.object = @"objectName";
 request.source = @"objectCopySource"; //  源文件 URL 路径,可以通过 versionid 子资源指定历史版本
 request.uploadID = @"uploadID"; // 在初始化分块上传的响应中,会返回一个唯一的描述符(upload ID)
 request.partNumber = 1; // 标志当前分块的序号
 [request setFinishBlock:^(QCloudCopyObjectResult* result, NSError* error) {
 }];
 [[QCloudCOSXMLService defaultCOSXML]UploadPartCopy:request];

Declared In

QCloudCOSXMLService+Transfer.h

ImageHelper Methods

– PutWatermarkObject:

盲水印功能.

- (void)PutWatermarkObject:(QCloudPutObjectWatermarkRequest *)request

Discussion

图片上传时添加盲水印的请求包与 COS 简单上传文件接口一致,只需在请求包头部增加图片处理参数 Pic-Operations 并使用盲水印参数即可

cos iOS SDK 盲水印上传请求的方法具体步骤如下:

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

  2. QCloudPicOperations 设置水印信息

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

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

示例

@code

QCloudPutObjectWatermarkRequest* put = [QCloudPutObjectWatermarkRequest new];
put.object = @"对象名";
put.bucket = @"桶名";
put.body =  @"上传的图片文件";
QCloudPicOperations * op = [[QCloudPicOperations alloc]init];
op.is_pic_info = NO;
QCloudPicOperationRule * rule = [[QCloudPicOperationRule alloc]init];
rule.fileid = @"test";
rule.text = @"水印文字"; // 水印文字只能是 [a-zA-Z0-9]
rule.type = QCloudPicOperationRuleText;
op.rule = @[rule];
put.picOperations = op;
[put setFinishBlock:^(id outputObject, NSError *error) {
   完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] PutWatermarkObject:put];

Declared In

QCloudCOSXMLService+ImageHelper.h

– GetRecognitionObject:

COS 对象内容审核的方法.

- (void)GetRecognitionObject:(QCloudGetRecognitionObjectRequest *)request

Discussion

内容审核的存量扫描功能通过借助数据万象的持久化处理接口,实现对 COS 存量数据的涉黄、涉政、 涉暴恐以及广告引导类图片、视频的扫描。

cos iOS SDK 中获取 COS 对象请求的方法具体步骤如下:

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

  2. 设置审核的类型 detectType

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

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

示例

@code

QCloudGetRecognitionObjectRequest* request = [QCloudGetRecognitionObjectRequest new];
request.bucket = @"bucketName"; //存储桶名称(cos v5 的 bucket格式为:xxx-appid, 如 test-1253960454)
request.object = @"objectName";;
request.detectType = QCloudRecognitionPorn|QCloudRecognitionAds; // 支持多种类型同时审核
[request setFinishBlock:^(QCloudGetRecognitionObjectResult * _Nullable outputObject,
                                            NSError * _Nullable error) {
    NSLog(@"%@",outputObject);
}];

[[QCloudCOSXMLService defaultCOSXML] GetRecognitionObject:request];

Declared In

QCloudCOSXMLService+ImageHelper.h

– GetFilePreviewObject:

COS 文档预览方法.

- (void)GetFilePreviewObject:(QCloudGetFilePreviewRequest *)request

Discussion

文档预览功能支持对多种文件类型生成图片格式预览,可以解决文档内容的页面展示问题, 满足 PC、App 等多个用户端的文档在线浏览需求,适用于在线教育、企业 OA、网站转码等业务场景。

cos iOS SDK 中获取 COS 文档预览方法具体步骤如下:

  1. 实例化 QCloudGetFilePreviewRequest。

  2. 传入参数桶名称 文件名 页码(每次返回该页的预览文件图片data)

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

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

示例

@code

QCloudGetFilePreviewRequest *request = [[QCloudGetFilePreviewRequest alloc]init];
request.bucket = @"桶名称";
request.object = 文件名;
request.page = 页码;
request.regionName = 桶所属区域;
[request setFinishBlock:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
    返回一个字典 包含总页数,文件data
}];
[[QCloudCOSXMLService defaultCOSXML] GetFilePreviewObject:request];

Declared In

QCloudCOSXMLService+ImageHelper.h