接口文档
最近更新时间: 2024-10-17 17:10:00
在接口文档中,我们假设您已经完成了初始化的过程。接口文档重点在于列出详细的接口列表,并且举例如何使用。查询时建议Control+F搜索到想要查询的接口,然后看我们给出的接口简单说明,复制示例到您的工程中运行。
如果需要更多的功能,或者不明白返回的参数是什么意义,建议直接查看代码里的注释,可以三指轻按、Force-touch重按或者将鼠标停留在变量上,按Control+Command+D查看它的释义。
Service 操作
列出所有Bucket - Get Service
Get Service 接口是用来获取请求者名下的所有存储空间列表(Bucket list)。
返回结果QCloudListAllMyBucketsResult参数说明
参数名称 | 描述 | 类型 |
---|---|---|
owner | 存储桶持有者的信息 | QCloudOwner * |
buckets | 所有的bucket信息 | NSArray * |
示例
QCloudGetServiceRequest* request = [[QCloudGetServiceRequest alloc] init];
[request setFinishBlock:^(QCloudListAllMyBucketsResult* result, NSError* error) {
//
}];
[[QCloudCOSXMLService defaultCOSXML] GetService:request];
存储桶操作
列举存储桶内的内容
方法原型
进行存储桶操作之前,我们需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetBucketRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudGetBucketRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 GetBucket 方法发出请求。
从回调的 finishBlock 中的 QCloudListBucketResult 获取具体内容。
QCloudGetBucketRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
region | 前缀匹配,用来规定返回的文件前缀地址 | NSString * | 否 |
delimiter | 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始 | NSString * | 否 |
encodingType | 规定返回值的编码方式,可选值:url | NSString * | 否 |
marker | 默认以 UTF-8 二进制顺序列出条目,所有列出条目从 marker 开始 | NSString * | 否 |
maxKeys | 单次返回的最大条目数量,默认 1000 | int | 否 |
示例
QCloudGetBucketRequest* request = [QCloudGetBucketRequest new];
request.bucket = @“testBucket-123456789”;
request.maxKeys = 1000;
[request setFinishBlock:^(QCloudListBucketResult * result, NSError* error) {
//additional actions after finishing
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucket:request];
获取存储桶的 ACL(Access Control List)
方法原型
进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetBucketACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudGetBucketACLRequest,填入获取 ACL 的存储桶。
调用 QCloudCOSXMLService 对象中的 GetBucketACL 方法发出请求。
从回调的 finishBlock 中的 QCloudACLPolicy 获取具体内容。
QCloudGetBucketACLRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString * | 是 |
返回结果 QCloudACLPolicy 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
owner | 存储桶持有者的信息 | QCloudACLOwner * |
list | accessControl被授权者与权限的信息 | NSArray * |
示例
QCloudGetBucketACLRequest* getBucketACl = [QCloudGetBucketACLRequest new];
getBucketACl.bucket = @"testbucket-123456789";
[getBucketACl setFinishBlock:^(QCloudACLPolicy * _Nonnull result, NSError * _Nonnull error) {
//QCloudACLPolicy中包含了 Bucket 的 ACL 信息。
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketACL:getBucketACl];
设置存储桶的 ACL(Access Control List)
方法原型
进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutBucketACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudPutBucketACLRequest,填入需要设置的存储桶,然后根据设置值的权限类型分别填入不同的参数。
调用 QCloudCOSXMLService 对象中的 PutBucketACL 方法发出请求。
从回调的 finishBlock 中的获取设置是否成功,并做设置成功后的一些额外动作。
QCloudPutBucketACLRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
accessControlList | 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private | NSString * | 否 |
grantRead | 赋予被授权者读的权限。格式: id=" ",id=" "; 当需要给子账户授权时,id="qcs::cam::uin/:uin/", 当需要给根账户授权时,id="qcs::cam::uin/:uin/" 其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID |
NSString * | 否 |
grantWrite | 授予被授权者写的权限。格式同上。 | NSString * | 否 |
grantFullControl | 授予被授权者读写权限。格式同上。 | NSString * | 否 |
示例
QCloudPutBucketACLRequest* putACL = [QCloudPutBucketACLRequest new];
NSString* appID = @“您的 APP ID”;
NSString *ownerIdentifier = [NSString stringWithFormat:@"qcs::cam::uin/%@:uin/%@", appID, appID];
NSString *grantString = [NSString stringWithFormat:@"id=\"%@\"",ownerIdentifier];
putACL.grantFullControl = grantString;
putACL.bucket = @“testBucket-123456789”;
[putACL setFinishBlock:^(id outputObject, NSError *error) {
//error occucs if error != nil
}];
[[QCloudCOSXMLService defaultCOSXML] PutBucketACL:putACL];
获取存储桶的 CORS(跨域访问)设置
方法原型
进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutBucketCORSRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudPutBucketCORSRequest,填入需要获取 CORS 的存储桶。
调用 QCloudCOSXMLService 对象中的 GetBucketCORS 方法发出请求。
从回调的 finishBlock 中获取结果。结果封装在了 QCloudCORSConfiguration 对象中,该对象的 rules 属性是一个数组,数组里存放着一组 QCloudCORSRule,具体的 CORS 设置就封装在 QCloudCORSRule 对象里。
QCloudPutBucketCORSRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
返回结果 QCloudCORSConfiguration 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
rules | 放置 CORS 的数组, 数组内容为 QCloudCORSRule 实例 | NSArray<CloudCORSRule* > * |
QCloudCORSRule 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
identifier | 配置规则的 ID | NSString * |
allowedMethod | 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE | NSArray<NSString* > * |
allowedOrigin | 允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:http://www.qq.com |
NSString * |
allowedHeader | 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 * | NSArray<NSString* > * |
maxAgeSeconds | 设置 OPTIONS 请求得到结果的有效期 | int |
exposeHeader | 设置浏览器可以接收到的来自服务器端的自定义头部信息 | NSString * |
示例
QCloudGetBucketCORSRequest* corsReqeust = [QCloudGetBucketCORSRequest new];
corsReqeust.bucket = @"testBucket-123456789";
[corsReqeust setFinishBlock:^(QCloudCORSConfiguration * _Nonnull result, NSError * _Nonnull error) {
//CORS设置封装在result中。
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketCORS:corsReqeust];
设置存储桶的 CORS(跨域访问)
方法原型
进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutBucketCORSRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudPutBucketCORSRequest,设置存储桶,并且将需要的 CORS 装入 QCloudCORSRule 中,如果有多组 CORS 设置,可以将多个 QCloudCORSRule 放在一个 NSArray 里,然后将该数组填入 QCloudCORSConfiguration的rules 属性里,放在 request 中。
调用 QCloudCOSXMLService 对象中的 PutBucketCORS 方法发出请求。
从回调的 finishBlock 中的获取设置成功与否(error 是否为空),并且做一些设置后的额外动作。
QCloudPutBucketCORSRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
corsConfiguration | 封装了 CORS 的具体参数 | QCloudCORSConfiguration * | 是 |
QCloudCORSConfiguration 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
rules | 放置 CORS 的数组, 数组内容为 QCloudCORSRule 实例 | NSArray<QCloudCORSRule* > * |
QCloudCORSRule 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
identifier | 配置规则的ID | NSString * |
allowedMethod | 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE | NSArray <NSString* > * |
allowedOrigin | 允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:http://www.qq.com |
NSString * |
allowedHeader | 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 * | NSArray <NSString * > * |
maxAgeSeconds | 设置 OPTIONS 请求得到结果的有效期 | int |
exposeHeader | 设置浏览器可以接收到的来自服务器端的自定义头部信息 | NSString * |
示例
QCloudPutBucketCORSRequest* putCORS = [QCloudPutBucketCORSRequest new];
QCloudCORSConfiguration* cors = [QCloudCORSConfiguration new];
QCloudCORSRule* rule = [QCloudCORSRule new];
rule.identifier = @"sdk";
rule.allowedHeader = @[@"origin",@"host",@"accept",@"content-type",@"authorization"];
rule.exposeHeader = @"ETag";
rule.allowedMethod = @[@"GET",@"PUT",@"POST", @"DELETE", @"HEAD"];
rule.maxAgeSeconds = 3600;
rule.allowedOrigin = @"*";
cors.rules = @[rule];
putCORS.corsConfiguration = cors;
putCORS.bucket = @"testBucket-123456789";
[putCORS setFinishBlock:^(id outputObject, NSError *error) {
if (!error) {
//success
}
}];
[[QCloudCOSXMLService defaultCOSXML] PutBucketCORS:putCORS];
获取存储桶的地域信息
方法原型
进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetBucketLocationRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudGetBucketLocationRequest,填入 Bucket 名。
调用 QCloudCOSXMLService 对象中的 GetBucketLocation 方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudGetBucketLocationRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
返回结果 QCloudBucketLocationConstraint 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
locationConstraint | 说明 Bucket 所在区域 | NSString* |
示例
QCloudGetBucketLocationRequest* locationReq = [QCloudGetBucketLocationRequest new];
locationReq.bucket = @"testBucket-123456789";
__block QCloudBucketLocationConstraint* location;
[locationReq setFinishBlock:^(QCloudBucketLocationConstraint * _Nonnull result, NSError * _Nonnull error) {
location = result;
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketLocation:locationReq];
删除存储桶 CORS 设置
方法原型
进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudDeleteBucketCORSRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudDeleteBucketCORSRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudDeleteBucketCORSRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
示例
QCloudDeleteBucketCORSRequest* deleteCORS = [QCloudDeleteBucketCORSRequest new];
deleteCORS.bucket = @"testBucket-123456789";
[deleteCORS setFinishBlock:^(id outputObject, NSError *error) {
//success if error == nil
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteBucketCORS:deleteCORS];
查询 Bucket 中正在进行的分块上传
方法原型
进行存储桶操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudListBucketMultipartUploadsRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudListBucketMultipartUploadsRequest,填入需要的参数,如返回结果的前缀、编码方式等。
调用 QCloudCOSXMLService 对象中的 ListBucketMultipartUploads 方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudListBucketMultipartUploadsRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
prefix | 限定返回的 Object key 必须以 Prefix 作为前缀。注意使用 prefix 查询时,返回的 key 中仍会包含 Prefix | NSString * | 否 |
delimiter | 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始 | NSString * | 否 |
encodingType | 规定返回值的编码方式,可选值:url | NSString * | 否 |
keyMarker | 列出条目从该 key 值开始 | NSString * | 否 |
uploadIDMarker | 列出条目从该 UploadId 值开始 | int | 否 |
maxUploads | 设置最大返回的 multipart 数量,合法值 1 到 1000 | int | 否 |
返回结果 QCloudListMultipartUploadsResult 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * |
prefix | 限定返回的 Object key 必须以 Prefix 作为前缀。注意使用 prefix 查询时,返回的 key 中仍会包含 Prefix | NSString * |
delimiter | 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始 | NSString * |
encodingType | 规定返回值的编码方式,可选值:url | NSString * |
keyMarker | 列出条目从该 key 值开始 | NSString * |
maxUploads | 设置最大返回的 multipart 数量,合法值 1 到 1000 | int |
uploads | 所有已经上传的分片信息 | NSArray* |
示例
QCloudListBucketMultipartUploadsRequest* uploads = [QCloudListBucketMultipartUploadsRequest new];
uploads.bucket = @"testBucket-123456789";
uploads.maxUploads = 100;
__block NSError* resulError;
__block QCloudListMultipartUploadsResult* multiPartUploadsResult;
[uploads setFinishBlock:^(QCloudListMultipartUploadsResult* result, NSError *error) {
multiPartUploadsResult = result;
localError = error;
}];
[[QCloudCOSXMLService defaultCOSXML] ListBucketMultipartUploads:uploads];
Head Bucket
Head Bucket 请求可以确认该 Bucket 是否存在,是否有权限访问。Head 的权限与 Read 一致。当该 Bucket 存在时,返回200;当该 Bucket 无访问权限时,返回 403;当该 Bucket 不存在时,返回 404。
QCloudHeadBucketRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString * | 是 |
示例
QCloudHeadBucketRequest* request = [QCloudHeadBucketRequest new];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(id outputObject, NSError* error) {
//设置完成回调。如果没有error,则可以正常访问bucket。如果有error,可以从error code和messasge中获取具体的失败原因。
}];
[[QCloudCOSXMLService defaultCOSXML] HeadBucket:request];
Put Bucket Tagging
QCloudPutBucketTaggingRequest参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString* | 是 |
taggings | 存放需要设置的tag数组 | QCloudBucketTagging | 是 |
示例
QCloudPutBucketTaggingRequest* putTagging = [QCloudPutBucketTaggingRequest new];
QCloudBucketTagging* tagging = [QCloudBucketTagging new];
QCloudBucketTag* tag = [QCloudBucketTag new];
tag.key = @"tag的key";
tag.value = @"tag的值";
tagging.tagset = @[tag];
putTagging.bucket = @"testBucket-123456789";
putTagging.taggings = tagging;
[putTagging setFinishBlock:^(id outputObject, NSError *error) {
//完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] PutBucketTagging:putTagging];
Delete Bucket Tagging
QCloudDeleteBucketTaggingRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString* | 是 |
示例
QCloudDeleteBucketTaggingRequest* request = [QCloudDeleteBucketTaggingRequest new];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(id outputObject, NSError* error) {
//删除完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteBucketTagging:request];
Get Bucket Tagging
QCloudGetBucketTaggingRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString* | 是 |
返回结果 QCloudBucketTagging 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
tagest | 装有bucket的tag的数组 | NSArray* |
示例
QCloudGetBucketTaggingRequest* request = [QCloudGetBucketTaggingRequest new];
request.bucket = @"testBucket-123456789" ;
[request setFinishBlock:^(QCloudBucketTagging* result, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketTagging:request];
Put Bucket Lifecycle
COS 支持用户以生命周期配置的方式来管理 Bucket 中 Object 的生命周期。生命周期配置包含一个或多个将应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作)。 这些操作分为以下两种:
转换操作:定义对象转换为另一个存储类的时间。例如,您可以选择在对象创建 30 天后将其转换为 STANDARD_IA (IA,适用于不常访问) 存储类别。 过期操作:指定 Object 的过期时间。COS 将会自动为用户删除过期的 Object。
Put Bucket Lifecycle 用于为 Bucket 创建一个新的生命周期配置。如果该 Bucket 已配置生命周期,使用该接口创建新的配置的同时则会覆盖原有的配置。
参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString* | 是 |
lifeCycle | 生命周期配置 | QCloudLifecycleConfiguration* | 是 |
QCloudLifecycleConfiguration 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
rules | 规则描述集合的数组 | NSArray<QCloudLifecycleRule*> * | 是 |
QCloudLifecycleRule 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
identifier | 用于唯一地标识规则,长度不能超过 255 个字符 | NSString* | 是 |
filter | Filter 用于描述规则影响的 Object 集合 | QCloudLifecycleRuleFilter* | |
status | 指明规则是否启用,枚举值:Enabled,Disabled | QCloudLifecycleStatue | 是 |
abortIncompleteMultipartUpload | 设置允许分片上传保持运行的最长时间 | QCloudLifecycleAbortIncompleteMultipartUpload | 否 |
transition | 规则转换属性,对象何时转换被转换为 Standard_IA 或 Nearline | QCloudLifecycleTransition* | 否 |
expiration | 规则过期属性 | QCloudLifecycleExpiration* | 否 |
noncurrentVersionExpiration | 指明非当前版本对象何时过期 | QCloudLifecycleExpiration* | 否 |
noncurrentVersionTransition | 指明非当前版本对象何时转换被转换为 STANDARD_IA 或 NEARLINE | QCloudNoncurrentVersionExpiration* | 否 |
示例
QCloudPutBucketLifecycleRequest* request = [QCloudPutBucketLifecycleRequest new];
request.bucket = @"填入bucket名";
__block QCloudLifecycleConfiguration* configuration = [[QCloudLifecycleConfiguration alloc] init];
QCloudLifecycleRule* rule = [[QCloudLifecycleRule alloc] init];
rule.identifier = @"identifier";
rule.status = QCloudLifecycleStatueEnabled;
QCloudLifecycleRuleFilter* filter = [[QCloudLifecycleRuleFilter alloc] init];
filter.prefix = @"0";
rule.filter = filter;
QCloudLifecycleTransition* transition = [[QCloudLifecycleTransition alloc] init];
transition.days = 100;
transition.storageClass = QCloudCOSStorageNearline;
rule.transition = transition;
request.lifeCycle = configuration;
request.lifeCycle.rules = @[rule];
[request setFinishBlock:^(id outputObject, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] PutBucketLifecycle:request];
Get Bucket Lifecycle
返回结果 QCloudLifecycleConfiguration 参数说明
与 Put Bucket Lifecycle 接口中的QCloudLifecycleConfiguration一致。
示例
QCloudGetBucketLifecycleRequest* request = [QCloudGetBucketLifecycleRequest new];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(QCloudLifecycleConfiguration* result,NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketLifecycle:request];
Delete Bucket Lifecycle
返回结果 QCloudLifecycleConfiguration 参数说明
与 Put Bucket Lifecycle 接口中的QCloudLifecycleConfiguration一致。
示例
QCloudDeleteBucketLifeCycleRequest* request = [[QCloudDeleteBucketLifeCycleRequest alloc ] init];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(QCloudLifecycleConfiguration* result, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteBucketLifeCycle:request];
Put Bucket Versioning
Put Bucket Versioning 接口实现启用或者暂停存储桶的版本控制功能。请注意这是一个不可逆的接口,开启以后不可撤销。
QCloudPutBucketVersioningRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString* | 是 |
configuration | 版本控制的具体信息 | QCloudBucketVersioningConfiguration* | 是 |
QCloudBucketVersioningConfiguration 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
status | 说明版本是否开启,枚举值:Suspended\Enabled | QCloudCOSBucketVersioningStatus | 是 |
示例
QCloudPutBucketVersioningRequest* request = [[QCloudPutBucketVersioningRequest alloc] init];
request.bucket = @"testBucket-123456789";
QCloudBucketVersioningConfiguration* configuration = [[QCloudBucketVersioningConfiguration alloc] init];
request.configuration = configuration;
configuration.status = QCloudCOSBucketVersioningStatusEnabled;
[request setFinishBlock:^(id outputObject, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] PutBucketVersioning:request];
Get Bucket Versioning
返回结果 QCloudBucketVersioningConfiguration 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
status | 说明版本是否开启,枚举值:Suspended\Enabled | QCloudCOSBucketVersioningStatus |
示例
QCloudGetBucketVersioningRequest* request = [[QCloudGetBucketVersioningRequest alloc] init];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(QCloudBucketVersioningConfiguration* result, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketVersioning:request];
Put Bucket Replication
Put Bucket Replication 请求用于向开启版本管理的存储桶添加 replication 配置。如果存储桶已经拥有 replication 配置,那么该请求会替换现有配置。
QCloudPutBucketReplicationRequest参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString* | 是 |
configuation | QCloudBucketReplicationConfiguation* | 是 |
注意: 使用该接口存储桶必须已经开启版本管理,版本管理详细请参见 Put Bucket Versioning。
返回结果 参数说明
示例
QCloudPutBucketReplicationRequest* request = [[QCloudPutBucketReplicationRequest alloc] init];
request.bucket = @"source-bucket";
QCloudBucketReplicationConfiguation* configuration = [[QCloudBucketReplicationConfiguation alloc] init];
configuration.role = [NSString identifierStringWithID:@"uin" :@"uin"];
QCloudBucketReplicationRule* rule = [[QCloudBucketReplicationRule alloc] init];
rule.identifier = @"identifier";
rule.status = QCloudQCloudCOSXMLStatusEnabled;
QCloudBucketReplicationDestination* destination = [[QCloudBucketReplicationDestination alloc] init];
//qcs:id/64295985640140800:cos:[region]:appid/[AppId]:[bucketname]
NSString* destinationBucket = @"destinationBucket";
NSString* region = @"destinationRegion"
destination.bucket = [NSString stringWithFormat:@"qcs:id/64295985640140800:cos:%@:appid/%@:%@",@"region",@"appid",@"destinationBucket"];
rule.destination = destination;
configuration.rule = @[rule];
request.configuation = configuration;
[request setFinishBlock:^(id outputObject, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] PutBucketRelication:request];
Get Bucket Replication
Get Bucket Replication 接口请求实现读取存储桶中用户跨区域复制配置信息。
返回结果 QCloudBucketReplicationConfiguation 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
role | 发起者身份标识,格式为:qcs::cam::uin/:uin/ | NSString* |
rule | 具体配置信息,最多支持 1000 个,所有策略只能指向一个目标存储桶 | NSArray<QCloudBucketReplicationRule*> * |
QCloudBucketReplicationRule 参数说明
参数名称 | 描述 | 类型 |
---|---|---|
status | 标志Rule是否生效 | QCloudQCloudCOSXMLStatus |
identifier | 用来标注具体rule的名称 | NSString* |
prefix | 前缀匹配策略,不可重叠,重叠返回错误。前缀匹配根目录为空 | NSString* |
destination | 目标存储桶信息 | QCloudBucketReplicationDestination* |
示例
QCloudGetBucketReplicationRequest* request = [[QCloudGetBucketReplicationRequest alloc] init];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(QCloudBucketReplicationConfiguation* result, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] GetBucketReplication:request];
Delete Bucket Replication
Delete Bucket Replication 接口请求实现删除存储桶中用户跨区域复制配置。
参数说明
返回结果 参数说明
示例
QCloudDeleteBucketReplicationRequest* request = [[QCloudDeleteBucketReplicationRequest alloc] init];
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(id outputObject, NSError* error) {
//设置完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteBucketReplication:request];
文件操作
在 COS 中,每个文件就是一个 Object(对象)。对文件的操作,其实也就是对对象的操作。
简单上传 (Put Object)
简单上传仅限于小文件(20MB以下)。简单上传支持从内存中上传文件。
QCloudPutObjectRequest 参数说明
参数名称 | 说明 | 类型 | 必填 |
---|---|---|---|
Object | 上传文件(对象)的文件名,也是对象的key | NSString * | 是 |
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
body | 如果文件存放在硬盘中,这里是需要上传的文件的路径,填入NSURL * 类型变量。如果文件存放在内存中,则这里可以填入包含文件二进制数据的NSData * 类型变量 | BodyType | 是 |
storageClass | 对象的存储级别 | QCloudCOSStorageClass | 是 |
cacheControl | RFC 2616 中定义的缓存策略 | NSString * | 否 |
contentDisposition | RFC 2616中定义的文件名称 | NSString * | 否 |
expect | 当使用expect=@"100-Continue"时,在收到服务端确认后才会发送请求内容 | NSString * | 否 |
expires | RFC 2616中定义的过期时间 | NSString * | 否 |
initMultipleUploadFinishBlock | 如果该 request 产生了分片上传的请求,那么在分片上传初始化完成后,会通过这个 block 来回调,可以在该回调 block 中获取分片完成后的 bucket, key, uploadID,以及用于后续上传失败后恢复上传的ResumeData。 | block | 否 |
accessControlList | 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private | NSString * | 否 |
grantRead | 赋予被授权者读的权限。格式: id=" ",id=" ";当需要给子账户授权时,id="qcs::cam::uin/:uin/",当需要给根账户授权时,id="qcs::cam::uin/:uin/" 其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID | NSString * | 否 |
grantWrite | 授予被授权者写的权限。格式同上。 | NSString * | 否 |
grantFullControl | 授予被授权者读写权限。格式同上。 | NSString * | 否 |
示例
QCloudPutObjectRequest* put = [QCloudPutObjectRequest new];
put.object = @"object-name";
put.bucket = @"bucket-12345678";
put.body = [@"testFileContent" dataUsingEncoding:NSUTF8StringEncoding];
[put setFinishBlock:^(id outputObject, NSError *error) {
//完成回调
if (nil == error) {
//成功
}
}];
[[QCloudCOSXMLService defaultCOSXML] PutObject:put];
查询对象的 ACL(Access Control List)
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudGetObjectACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudGetObjectACLRequest,填入存储桶的名称,和需要查询对象的名称。
调用 QCloudCOSXMLService 对象中的 GetObjectACL 方法发出请求。
从回调的 finishBlock 中的获取的 QCloudACLPolicy 对象中获取封装好的 ACL 的具体信息。
QCloudGetObjectACLRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
object | 对象名 | NSString * | 是 |
示例
request.bucket = self.aclBucket;
request.object = @"对象的名称";
request.bucket = @"testBucket-123456789"
__block QCloudACLPolicy* policy;
[request setFinishBlock:^(QCloudACLPolicy * _Nonnull result, NSError * _Nonnull error) {
policy = result;
}];
[[QCloudCOSXMLService defaultCOSXML] GetObjectACL:request];
设置对象的 ACL(Access Control List)
方法原型
进行对象操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudPutObjectACLRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudPutObjectACLRequest,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 finishBlock 中获取设置的完成情况,若 error 为空,则设置成功。
QCloudPutObjectACLRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString * | 是 |
object | 对象名 | NSString * | 是 |
accessControlList | 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private | NSString * | 否 |
grantRead | 赋予被授权者读的权限。格式: id=" ",id=" "; 当需要给子账户授权时,id="qcs::cam::uin/:uin/", 当需要给根账户授权时,id="qcs::cam::uin/:uin/" 其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID |
NSString * | 否 |
grantWrite | 授予被授权者写的权限。格式同上。 | NSString * | 否 |
grantFullControl | 授予被授权者读写权限。格式同上。 | NSString * | 否 |
示例
QCloudPutObjectACLRequest* request = [QCloudPutObjectACLRequest new];
request.object = @"需要设置 ACL 的对象名";
request.bucket = @"testBucket-123456789";
NSString *ownerIdentifier = [NSString stringWithFormat:@"qcs::cam::uin/%@:uin/%@",self.appID, self.appID];
NSString *grantString = [NSString stringWithFormat:@"id=\"%@\"",ownerIdentifier];
request.grantFullControl = grantString;
__block NSError* localError;
[request setFinishBlock:^(id outputObject, NSError *error) {
localError = error;
}];
[[QCloudCOSXMLService defaultCOSXML] PutObjectACL:request];
下载文件
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化,填入需要的参数。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 finishBlock 中的获取具体内容。
参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString * | 是 |
object | 对象名 | NSString * | 是 |
range | RFC 2616 中定义的指定文件下载范围,以字节(bytes)为单位 | NSString * | 否 |
ifModifiedSince | 如果文件修改时间晚于指定时间,才返回文件内容。否则返回 412 (not modified) | NSString * | 否 |
responseContentType | 设置响应头部中的 Content-Type 参数 | NSString * | 否 |
responseContentLanguage | 设置响应头部中的 Content-Language 参数 | NSString * | 否 |
responseContentExpires | 设置响应头部中的 Content-Expires 参数 | NSString * | 否 |
responseCacheControl | 设置响应头部中的 Cache-Control 参数 | NSString * | 否 |
responseContentDisposition | 设置响应头部中的 Content-Disposition 参数。 | NSString * | 否 |
responseContentEncoding | 设置响应头部中的 Content-Encoding 参数 | NSString * | 否 |
示例
QCloudGetObjectRequest* request = [QCloudGetObjectRequest new];
//设置下载的路径 URL,如果设置了,文件将会被下载到指定路径中
request.downloadingURL = [NSURL URLWithString:QCloudTempFilePathWithExtension(@"downding")];
request.object = @“你的 Object-Key”;
request.bucket = @"testBucket-123456789";
[request setFinishBlock:^(id outputObject, NSError *error) {
//additional actions after finishing
}];
[request setDownProcessBlock:^(int64_t bytesDownload, int64_t totalBytesDownload, int64_t totalBytesExpectedToDownload) {
//下载过程中的进度
}];
[[QCloudCOSXMLService defaultCOSXML] GetObject:request];
Object 跨域访问配置的预请求
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudOptionsObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudOptionsObjectRequest,填入需要设置的对象名、存储桶名、模拟跨域访问请求的 http 方法和模拟跨域访问允许的访问来源。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudOptionsObjectRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
object | 对象名 | NSString * | 是 |
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
accessControlRequestMethod | 模拟跨域访问的请求HTTP方法 | NSArray<NSString* > * |
是 |
origin | 模拟跨域访问允许的访问来源,支持通配符 * , 格式为:协议://域名[:端口]如:http://www.qq.com |
NSString * | 是 |
allowedHeader | 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符 * | NSArray<NSString * > * |
否 |
示例
QCloudOptionsObjectRequest* request = [[QCloudOptionsObjectRequest alloc] init];
request.bucket =@"存储桶名";
request.origin = @"*";
request.accessControlRequestMethod = @"get";
request.accessControlRequestHeaders = @"host";
request.object = @"对象名";
__block id resultError;
[request setFinishBlock:^(id outputObject, NSError* error) {
resultError = error;
}];
[[QCloudCOSXMLService defaultCOSXML] OptionsObject:request];
删除单个对象
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudDeleteObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudDeleteObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudDeleteObjectRequest 参数说明
参数名称 | 类型 | 必填 | 描述 |
---|---|---|---|
object | 对象名 | NSString * | 是 |
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString * | 是 |
示例
QCloudDeleteObjectRequest* deleteObjectRequest = [QCloudDeleteObjectRequest new];
deleteObjectRequest.bucket = @"testBucket-123456789";
deleteObjectRequest.object = @"对象名";
__block NSError* resultError;
[deleteObjectRequest setFinishBlock:^(id outputObject, NSError *error) {
resultError = error;
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteObject:deleteObjectRequest];
删除多个对象
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudDeleteMultipleObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudDeleteMultipleObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudDeleteMultipleObjectRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
object | 对象名 | NSString * | 是 |
deleteObjects | 封装了需要批量删除的多个对象的信息 | QCloudDeleteInfo * | 是 |
QCloudDeleteInfo参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
objects | 存放需要删除对象信息的数组 | NSArray<QCloudDeleteObjectInfo * > * |
是 |
QCloudDeleteObjectInfo 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
key | 对象名 | NSString * | 是 |
示例
QCloudDeleteMultipleObjectRequest* delteRequest = [QCloudDeleteMultipleObjectRequest new];
delteRequest.bucket = @"testBucket-123456789";
QCloudDeleteObjectInfo* deletedObject0 = [QCloudDeleteObjectInfo new];
deletedObject0.key = @"第一个对象名";
QCloudDeleteObjectInfo* deleteObject1 = [QCloudDeleteObjectInfo new];
deleteObject1.key = @"第二个对象名";
QCloudDeleteInfo* deleteInfo = [QCloudDeleteInfo new];
deleteInfo.quiet = NO;
deleteInfo.objects = @[ deletedObject0,deleteObject2];
delteRequest.deleteObjects = deleteInfo;
__block NSError* resultError;
[delteRequest setFinishBlock:^(QCloudDeleteResult* outputObject, NSError *error) {
localError = error;
deleteResult = outputObject;
}];
[[QCloudCOSXMLService defaultCOSXML] DeleteMultipleObject:delteRequest];
初始化分片上传
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudInitiateMultipartUploadRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudInitiateMultipartUploadRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 InitiateMultipartUpload 方法发出请求。
从回调的 finishBlock 中的获取具体内容。
参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
Object | 上传文件(对象)的文件名,也是对象的key | NSString * | 是 |
bucket | 存储桶名,可在COSV5控制台上面看到,格式为- ,例如 testBucket-1253653367 | NSString * | 是 |
storageClass | 对象的存储级别 | QCloudCOSStorageClass | 是 |
cacheControl | RFC 2616 中定义的缓存策略 | NSString * | 否 |
contentDisposition | RFC 2616中 定义的文件名称 | NSString * | 否 |
expect | 当使用 expect=@"100-continue" 时,在收到服务端确认后才会发送请求内容 |
NSString * | 否 |
expires | RFC 2616 中定义的过期时间 | NSString * | 否 |
storageClass | 对象的存储级别 | QCloudCOSStorageClass | 否 |
accessControlList | 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private | NSString * | 否 |
grantRead | 赋予被授权者读的权限。格式: id=" ",id=" "; 当需要给子账户授权时,id="qcs::cam::uin/:uin/", 当需要给根账户授权时,id="qcs::cam::uin/:uin/" 其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID |
NSString * | 否 |
grantWrite | 授予被授权者写的权限。格式同上。 | NSString * | 否 |
grantFullControl | 授予被授权者读写权限。格式同上。 | NSString * | 否 |
示例
QCloudInitiateMultipartUploadRequest* initrequest = [QCloudInitiateMultipartUploadRequest new];
initrequest.bucket = @"testBucket-123456789";
initrequest.object = @"对象名";
__block QCloudInitiateMultipartUploadResult* initResult;
[initrequest setFinishBlock:^(QCloudInitiateMultipartUploadResult* outputObject, NSError *error) {
initResult = outputObject;
}];
[[QCloudCOSXMLService defaultCOSXML] InitiateMultipartUpload:initrequest];
获取对象meta信息
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudHeadObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudHeadObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 HeadObject 方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudHeadObjectRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
Object | 对象名 | NSString * | 是 |
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString * | 是 |
ifModifiedSince | 如果文件修改时间晚于指定时间,才返回文件内容。否则返回 304 (not modified) | NSString * | 是 |
示例
QCloudHeadObjectRequest* headerRequest = [QCloudHeadObjectRequest new];
headerRequest.object = @“对象名”;
headerRequest.bucket = @"testBucket-123456789";
__block id resultError;
[headerRequest setFinishBlock:^(NSDictionary* result, NSError *error) {
resultError = error;
}];
[[QCloudCOSXMLService defaultCOSXML] HeadObject:headerRequest];
追加文件
Append Object 接口请求可以将一个 Object(文件)以分块追加的方式上传至指定存储桶中。Object 属性为 Appendable 时,才能使用 Append Object 接口上传。 Object 属性可以在 Head Object 操作中查询到,发起 Head Object 请求时,会返回自定义 Header 的『x-cos-object-type』,该 Header 只有两个枚举值:Normal 或者 Appendable。通过 Append Object 操作创建的 Object 类型为 Appendable 文件;通过 Put Object 上传的 Object 是 Normal 文件。 当 Appendable 的 Object 被执行 Put Object 的请求操作以后,原 Object 被覆盖,属性改变为 Normal 。 追加上传的 Object 建议大小 1M-5G。如果 Position 的值和当前 Object 的长度不致,COS 会返回 409 错误。如果 Append 一个 Normal 属性的文件,COS 会返回 409 ObjectNotAppendable。
方法原型
进行文件操作之前,需要导入头文件 QCloudCOSXML/QCloudCOSXML.h。在此之前您需要完成前文中的 STEP-1 初始化操作。先生成一个 QCloudAppendObjectRequest 实例,然后填入一些需要的额外限制条件,通过并获得内容。具体步骤如下:
实例化 QCloudAppendObjectRequest,填入需要的参数。
调用 QCloudCOSXMLService 对象中的 AppendObject 方法发出请求。
从回调的 finishBlock 中的获取具体内容。
QCloudAppendObjectRequest 参数说明
参数名称 | 描述 | 类型 | 必填 |
---|---|---|---|
Object | 上传文件(对象)的文件名,也是对象的 key | NSString * | 是 |
bucket | 存储桶名,可在COSV5控制台上面看到,格式为-,例如 testBucket-1253653367 | NSString * | 是 |
position | 追加操作的起始点,单位:字节;首次追加 position=0,后续追加 position= 当前 Object 的 content-length | int | 是 |
body | 需要上传的文件的路径。填入NSURL * 类型变量 | BodyType | 是 |
storageClass | QCloudCOSStorageClass | 是 | 对象的存储级别 |
cacheControl | RFC 2616中定义的缓存策略 | NSString * | 否 |
contentDisposition | RFC 2616中定义的文件名称 | NSString * | 否 |
expect | 当使用 expect=@"100-continue" 时,在收到服务端确认后才会发送请求内容 |
NSString * | 否 |
expires | RFC 2616 中定义的过期时间 | NSString * | 否 |
storageClass | 对象的存储级别 | QCloudCOSStorageClass | 否 |
accessControlList | 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private | NSString * | 否 |
grantRead | 赋予被授权者读的权限。格式: id=" ",id=" "; 当需要给子账户授权时,id="qcs::cam::uin/:uin/", 当需要给根账户授权时,id="qcs::cam::uin/:uin/" 其中 OwnerUin 指的是根账户的 ID,而 SubUin 指的是子账户的 ID |
NSString * | 否 |
grantWrite | 授予被授权者写的权限。格式同上。 | NSString * | 否 |
grantFullControl | 授予被授权者读写权限。格式同上。 | NSString * | 否 |
示例
QCloudAppendObjectRequest* put = [QCloudAppendObjectRequest new];
put.object = [NSUUID UUID].UUIDString;
put.bucket = @testBucket-123456789;
put.body = 文件的URL,NSURL*类型
__block NSDictionary* result = nil;
[put setFinishBlock:^(id outputObject, NSError *error) {
result = outputObject;
}];
[[QCloudCOSXMLService defaultCOSXML] AppendObject:put];
服务器端加密(Server side encryption)说明
COS支持服务器端加密(Server side encryption),该特性的作用是object在上传到COS后会进行服务器端加密,然后再存储。下载时候会拿出原始没有解密的数据,进行解密后返回。这个过程对客户端是透明的,无需关心具体的加密过程。
如果需要使用该特性,那么在上传object时,需要在上传HTTP请求中加入一个额外的头部,key为 x-cos-server-side-encryption, 值为AES256。在下载时候直接照常GetObject即可。
利用SDK中自定义头部的功能可以实现这一需求。只需要在上传请求中加入自定义头部即可:
QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];
__block NSString* object = [NSUUID UUID].UUIDString;
put.object = @"object";
put.bucket = @"存储桶名";
put.body = @"文件在本地的URL";
put.customHeaders = @{@"x-cos-server-side-encryption":@"AES256"};
[put setFinishBlock:^(QCloudUploadObjectResult *result, NSError *error) {
//完成回调
}];
[[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];
下载时候无需关心加解密过程:
QCloudGetObjectRequest* getObjectRequest = [[QCloudGetObjectRequest alloc] init];
getObjectRequest.bucket = self.bucket;
getObjectRequest.object = object;
NSURL* downloadPath = @“下载到本地的路径”;
getObjectRequest.downloadingURL = downloadPath;
[getObjectRequest setFinishBlock:^(id outputObject, NSError *error) {
//完成回调
}];
[[QCloudCOSXMLService defaultCOSXML] GetObject:getObjectRequest];