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 的方法具体步骤如下:
实例化 QCloudGetObjectACLRequest,填入存储桶的名称,和需要查询对象的名称。
调用 QCloudCOSXMLService 对象中的 GetObjectACL 方法发出请求。
从回调的 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 的方法具体步骤如下:
实例化 QCloudPutObjectACLRequest,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 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 上单个对象请求的方法具体步骤如下:
实例化 QCloudDeleteObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 DeleteObject 方法发出请求。
从回调的 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 对象的方法具体步骤如下:
实例化 QCloudDeleteMultipleObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 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 对象的跨域访问配置预请求的方法具体步骤如下:
实例化 QCloudOptionsObjectRequest,填入需要设置的对象名、存储桶名、模拟跨域访问请求的 http 方法和模拟跨域访问允许的访问来源。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 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的方法具体步骤如下:
实例化 QCloudPutBucketRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 PutBucket 方法发出请求。
从回调的 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 下的部分或者全部对象的方法具体步骤如下:
实例化 QCloudGetBucketRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 GetBucket 方法发出请求。
从回调的 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 的方法具体步骤如下:
实例化 QCloudGetBucketACLRequest,填入获取 ACL 的存储桶。
调用 QCloudCOSXMLService 对象中的 GetBucketACL 方法发出请求。
从回调的 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 跨域访问配置信息的方法具体步骤如下:
实例化 QCloudGetBucketCORSRequest,填入需要获取 CORS 的存储桶。
调用 QCloudCOSXMLService 对象中的 GetBucketCORS 方法发出请求。
从回调的 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 所在的地域信息的方法具体步骤如下:
实例化 QCloudGetBucketLocationRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 GetBucketLocation 方法发出请求。
从回调的 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 的生命周期配置的方法具体步骤如下:
实例化 QCloudGetBucketLifecycleRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 GetBucketLifecycle 方法发出请求。
从回调的 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的方法具体步骤如下:
实例化 QCloudPutBucketACLRequest,填入需要设置的存储桶,然后根据设置值的权限类型分别填入不同的参数。
调用 QCloudCOSXMLService 对象中的 PutBucketACL 方法发出请求。
从回调的 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 的跨域配置信息的方法具体步骤如下:
实例化 QCloudPutBucketCORSRequest,填入需要获取 CORS 的存储桶。
调用 QCloudCOSXMLService 对象中的 PutBucketCORS 方法发出请求。
从回调的 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 生命周期配置的方法具体步骤如下:
实例化 QCloudPutBucketLifecycleRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 PutBucketLifecycle 方法发出请求。
从回调的 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 中删除跨域访问配置信息的方法具体步骤如下:
实例化 QCloudDeleteBucketCORSRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 DeleteBucketCORS 方法发出请求。
从回调的 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 的方法具体步骤如下:
实例化 QCloudDeleteBucketRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 DeleteBucket 方法发出请求。
从回调的 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 是否存在的方法具体步骤如下:
实例化 QCloudHeadBucketRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 HeadBucket 方法发出请求。
从回调的 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 中正在进行中的分块上传对象的方法具体步骤如下:
实例化 QCloudListBucketMultipartUploadsRequest,填入需要的参数,如返回结果的前缀、编码方式等。
调用 QCloudCOSXMLService 对象中的 ListBucketMultipartUploads 方法发出请求。
从回调的 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 版本控制启用或者暂停的方法具体步骤如下:
实例化 QCloudPutBucketVersioningRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 PutBucketVersioning 方法发出请求。
从回调的 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 版本控制信息的方法具体步骤如下:
实例化 QCloudGetBucketVersioningRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 GetBucketVersioning 方法发出请求。
从回调的 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 中配置跨区域复制的方法具体步骤如下:
实例化 QCloudPutBucketReplicationRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 PutBucketRelication 方法发出请求。
从回调的 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 中删除跨区域复制配置的方法具体步骤如下:
实例化 QCloudDeleteBucketReplicationRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 DeleteBucketReplication 方法发出请求。
从回调的 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 中获取所属账户的所有存储空间列表的方法具体步骤如下:
实例化 QCloudGetServiceRequest。
调用 QCloudCOSXMLService 对象中的 GetService 方法发出请求。
从回调的 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 中获取跨区域复制配置信息的方法具体步骤如下:
实例化 QCloudGetBucketReplicationRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 GetBucketReplication 方法发出请求。
从回调的 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 中简单上传请求的方法具体步骤如下:
实例化 QCloudPutObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 PutObject 方法发出请求。
从回调的 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 对象请求的方法具体步骤如下:
实例化 QCloudGetObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 GetObject 方法发出请求。
从回调的 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 中初始化分块上传请求的方法具体步骤如下:
实例化 QCloudInitiateMultipartUploadRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 InitiateMultipartUpload 方法发出请求。
从回调的 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 中上传一个对象某个分片块请求的方法具体步骤如下:
实例化 QCloudUploadPartRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 UploadPart 方法发出请求。
从回调的 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 中查询特定分块上传中的已上传块请求的方法具体步骤如下:
实例化 QCloudListMultipartRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 ListMultipart 方法发出请求。
从回调的 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 中完成整个分块上传请求的同步方法具体步骤如下:
实例化 QCloudCompleteMultipartUploadRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 CompleteMultipartUpload 方法发出请求。
从回调的 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 对象的元数据信息的方法具体步骤如下:
实例化 QCloudHeadObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 HeadObject 方法发出请求。
从回调的 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 中简单复制对象的方法具体步骤如下:
实例化 QCloudPutObjectCopyRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 PutObjectCopy 方法发出请求。
从回调的 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 中分块复制的方法具体步骤如下:
实例化 QCloudUploadPartCopyRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 UploadPartCopy 方法发出请求。
从回调的 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 盲水印上传请求的方法具体步骤如下:
实例化 QCloudPutObjectWatermarkRequest,填入需要的参数。
QCloudPicOperations 设置水印信息
调用 QCloudCOSXMLService 对象中的 PutWatermarkObject 方法发出请求。
从回调的 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 对象请求的方法具体步骤如下:
实例化 QCloudGetRecognitionObjectRequest,填入需要的参数。
设置审核的类型 detectType
调用 QCloudCOSXMLService 对象中的 GetRecognitionObject 方法发出请求。
从回调的 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 文档预览方法具体步骤如下:
实例化 QCloudGetFilePreviewRequest。
传入参数桶名称 文件名 页码(每次返回该页的预览文件图片data)
调用 QCloudCOSXMLService 对象中的 GetFilePreviewObject 方法发出请求。
从回调的 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