有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

简介

本文档提供关于对象的简单操作、分块操作等其他操作相关的 API 概览以及 SDK 示例代码。

简单操作

API
操作名
操作描述
查询对象列表
查询存储桶下的部分或者全部对象
简单上传对象
上传一个对象至存储桶
查询对象元数据
查询对象元数据信息
下载对象
下载一个对象至本地
复制对象
复制文件到目标路径
删除单个对象
在存储桶中删除指定对象
删除多个对象
在存储桶中批量删除对象
恢复归档对象
将归档类型的对象取回访问

分块操作

API
操作名
操作描述
查询分块上传
查询正在进行中的分块上传信息
初始化分块上传
初始化分块上传任务
上传分块
分块上传文件
复制分块
将其他对象复制为一个分块
查询已上传块
查询特定分块上传操作中的已上传的块
完成分块上传
完成整个文件的分块上传
终止分块上传
终止一个分块上传操作并删除已上传的块

简单操作

查询对象列表

功能说明

查询存储桶下的部分或者全部对象 。

方法原型

CosResult GetBucket(const GetBucketReq& req, GetBucketResp* resp)

请求示例1:列举目录下的对象

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket

qcloud_cos::GetBucketReq req(bucket_name);
req.SetPrefix("image/"); // 列举 image/目录下的对象
qcloud_cos::GetBucketResp resp;
qcloud_cos::CosResult result = cos.GetBucket(req, &resp);

// 调用成功,调用 resp 的成员函数获取返回内容
if (result.IsSucc()) {
std::vector<qcloud_cos::Content> contents = resp.GetContents();
// 遍历列举的对象
for (auto &content: contents) {
// do something
}
} else {
std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;
std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;
std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;
std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;
std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;
std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;
}

请求示例2:列举存储桶所有对象

#include "cos_api.h"
#include "cos_sys_config.h"
#include "cos_defines.h"

int main(int argc, char *argv[]) {
// 1. 指定配置文件路径,初始化 CosConfig
qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

// 2. 构造查询对象列表的请求
std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
qcloud_cos::GetBucketReq req(bucket_name);
qcloud_cos::CosResult result;
bool is_truncated = false;

// 3. 遍历所有对象
do {
qcloud_cos::GetBucketResp resp;
result = cos.GetBucket(req, &resp);
if (result.IsSucc()) {
std::vector<qcloud_cos::Content> contents = resp.GetContents();
for (auto &content: contents) {
// do something
}
req.SetMarker(resp.GetNextMarker()); // 设置下次列举的起始 key
is_truncated = resp.IsTruncated();
}
} while (result.IsSucc() && is_truncated);
}

参数说明

参数
参数描述
类型
是否必填
req
GetBucket 操作的请求
GetBucketReq
resp
GetBucket 操作的响应
GetBucketResp
GetBucketReq提供以下成员函数:
/// \\@brief 设置前缀,用来规定返回的文件前缀地址
void SetPrefix(const std::string& prefix);
/// \\brief 设置定界符,限制返回的是以 prefix 开头,并以 delimiter 第一次出现的结束的路径
void SetDelimiter(const std::string& delimiter);
/// \\brief 规定返回值的编码方式,可选值:url
void SetEncodingType(const std::string& encoding_type);
/// \\brief 默认以 UTF-8 二进制顺序列出条目,所有列出条目从 marker 开始
void SetMarker(const std::string& marker);
/// \\brief 单次返回最大的条目数量,默认1000
void SetMaxKeys(uint64_t max_keys);
GetBucketResp 提供以下成员函数:
/// \\brief 获取 Bucket 中 Object 对应的元信息
std::vector<Content> GetContents() const;
/// \\brief Bucket 名称
std::string GetName() const;
/// \\brief 获取定界符
std::string GetDelimiter() const;
/// \\brief 编码格式
std::string GetEncodingType() const;
/// \\brief 返回的文件前缀
std::string GetPrefix() const;
/// \\brief 默认以 UTF-8二进制顺序列出条目,所有列出条目从 marker开始
std::string GetMarker() const;
/// \\brief 单次响应请求内返回结果的最大的条目数量
uint64_t GetMaxKeys() const;
/// \\brief 响应请求条目是否被截断,布尔值:true,false
bool IsTruncated() const;
/// \\brief 假如返回条目被截断,则返回 NextMarker 就是下一个条目的起点
std::string GetNextMarker() const;
其中 Content 的定义如下:
struct Content {
std::string m_key; // Object 的 Key
std::string m_last_modified; // Object 最后被修改时间
std::string m_etag; // 文件的 MD-5 算法校验值
std::string m_size; // 文件大小,单位是 Byte
std::vector<std::string> m_owner_ids; // Bucket 持有者信息
std::string m_storage_class; // Object 的存储类别,枚举值:STANDARD,STANDARD_IA
};

简单上传对象

功能说明

上传对象到指定的存储桶中。

方法原型

/// 通过 Stream 进行上传
CosResult PutObject(const PutObjectByStreamReq& req, PutObjectByStreamResp* resp)

/// 上传本地文件
CosResult PutObject(const PutObjectByFileReq& req, PutObjectByFileResp* resp)

请求示例1:流式上传

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "object_name";
std::istringstream iss("put object");
// request 的构造函数中需要传入 istream
qcloud_cos::PutObjectByStreamReq req(bucket_name, object_name, iss);
// 调用 Set 方法设置元数据或者 ACL 等
req.SetXCosStorageClass("STANDARD_IA");
// 关闭 MD5校验,开启使用 req.TurnOnComputeConentMd5(),默认情况开启
req.TurnOffComputeConentMd5();
qcloud_cos::PutObjectByStreamResp resp;
qcloud_cos::CosResult result = cos.PutObject(req, &resp);

if (result.IsSucc()) {
// 调用成功,调用 resp 的成员函数获取返回内容
} else {
// 调用失败,调用 result 的成员函数获取错误信息
std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;
std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;
std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;
std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;
std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;
std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;
}

请求示例2:上传文件

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "object_name";
// request 的构造函数中需要传入本地文件路径
qcloud_cos::PutObjectByFileReq req(bucket_name, object_name, "/path/to/local/file");
// 调用 Set 方法设置元数据或者 ACL 等
req.SetXCosStorageClass("STANDARD_IA");
// 关闭 MD5 校验,开启使用 req.TurnOnComputeConentMd5(),默认情况开启
req.TurnOffComputeConentMd5();
qcloud_cos::PutObjectByFileResp resp;
qcloud_cos::CosResult result = cos.PutObject(req, &resp);
if (result.IsSucc()) {
// 调用成功,调用 resp 的成员函数获取返回内容
} else {
// 调用失败,调用 result 的成员函数获取错误信息
std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;
std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;
std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;
std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;
std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;
std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;
}

请求示例3:上传时限速

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);
std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "object_name";
// request 的构造函数中需要传入本地文件路径
qcloud_cos::PutObjectByFileReq req(bucket_name, object_name, "/path/to/local/file");
// 限速值设置范围为819200-838860800,即100KB/s-100MB/s,单位为bit/s
req.SetTrafficLimitByHeader(1048576);
qcloud_cos::PutObjectByFileResp resp;
qcloud_cos::CosResult result = cos.PutObject(req, &resp);
if (result.IsSucc()) {
// 调用成功,调用 resp 的成员函数获取返回内容
} else {
// 调用失败,调用 result 的成员函数获取错误信息
}

参数说明

参数
参数描述
类型
是否必填
req
PutObject 操作的请求
PutObjectByStreamReq/PutObjectByFileReq
resp
PutObject 操作的响应
PutObjectByStreamResp/PutObjectByFileResp
参数 Req 包括如下成员函数:
// Cache-Control RFC 2616 中定义的缓存策略,将作为 Object 元数据保存
void SetCacheControl(const std::string& str);

// Content-Disposition RFC 2616 中定义的文件名称,将作为 Object 元数据保存
void SetContentDisposition(const std::string& str);

// Content-Encoding RFC 2616 中定义的编码格式,将作为 Object 元数据保存-
void SetContentEncoding(const std::string& str);

// Content-Type RFC 2616 中定义的内容类型(MIME),将作为 Object 元数据保存
void SetContentType(const std::string& str);

// Expect 当使用 Expect: 100-continue 时,在收到服务端确认后,才会发送请求内容
void SetExpect(const std::string& str);

// Expires RFC 2616 中定义的过期时间,将作为 Object 元数据保存
void SetExpires(const std::string& str);

// 允许用户自定义的头部信息,将作为 Object 元数据返回.大小限制2K
void SetXCosMeta(const std::string& key, const std::string& value);

// x-cos-storage-class 设置 Object 的存储级别,枚举值:STANDARD,STANDARD_IA,ARCHIVE
// 默认值:STANDARD
void SetXCosStorageClass(const std::string& storage_class);

// 定义 Object 的 ACL 属性,有效值:private,public-read
// 默认值:private
void SetXcosAcl(const std::string& str);

// 赋予被授权者读的权限.格式:x-cos-grant-read: id=" ",id=" ".
// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>"
// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
void SetXcosGrantRead(const std::string& str);

// 赋予被授权者读写权限.格式:x-cos-grant-full-control: id=" ",id=" ".
// 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
// 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
void SetXcosGrantFullControl(const std::string& str);

/// 设置 Server 端加密使用的算法, 目前支持AES256
void SetXCosServerSideEncryption(const std::string& str);
参数 Resp 包括如下成员函数:
/// 获取 Object 的版本号, 如果 Bucket 未开启多版本, 返回空字符串
std::string GetVersionId();

/// Server 端加密使用的算法
std::string GetXCosServerSideEncryption();

查询对象元数据

功能说明

查询对象元数据信息。

方法原型

CosResult HeadObject(const HeadObjectReq& req, HeadObjectResp* resp)

请求示例

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "object_name";
qcloud_cos::HeadObjectReq req(bucket_name, object_name);
qcloud_cos::HeadObjectResp resp;
qcloud_cos::CosResult result = cos.HeadObject(req, &resp);
if (result.IsSucc()) {
// 下载成功,可以调用 HeadObjectResp 的成员函数
} else {
// 下载失败,可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等
}

参数说明

参数
参数描述
类型
是否必填
req
HeadObject 操作的请求
HeadObjectReq
resp
HeadObject 操作的响应
HeadObjectResp
HeadObjectResp 除了读取公共头部的成员函数外,还提供以下成员函数:
std::string GetXCosObjectType();

std::string GetXCosStorageClass();

// 获取自定义的 meta, 参数可以为 x-cos-meta-* 中的 *
std::string GetXCosMeta(const std::string& key);

// 以 map 形式返回所有自定义的 meta, map 的 key 均不包含"x-cos-meta-"前缀
std::map<std::string, std::string> GetXCosMetas();

// 获取 Server 端加密使用的算法
std::string GetXCosServerSideEncryption();

下载对象

功能说明

下载对象到本地(Get Object)。

方法原型

// 将 Object 下载到本地文件中
CosResult GetObject(const GetObjectByFileReq& req, GetObjectByFileResp* resp)

// 将 Object 下载到流中
CosResult GetObject(const GetObjectByStreamReq& req, GetObjectByStreamResp* resp)

// 将 Object 下载到本地文件中(多线程)
CosResult GetObject(const MultiGetObjectReq& req, MultiGetObjectResp* resp)

请求示例1:下载文件到本地

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "object_name";
std::string local_path = "/tmp/object_name";

// request 需要提供 appid、bucketname、object,以及本地的路径(包含文件名)
qcloud_cos::GetObjectByFileReq req(bucket_name, object_name, local_path);
qcloud_cos::GetObjectByFileResp resp;
qcloud_cos::CosResult result = cos.GetObject(req, &resp);
if (result.IsSucc()) {
// 下载成功,可以调用 GetObjectByFileResp 的成员函数
} else {
// 可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等
}

请求示例2:下载文件到流

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "object_name";
std::string local_path = "/tmp/object_name";
// request 需要提供 appid、bucketname、object, 以及输出流
std::ostringstream os;
qcloud_cos::GetObjectByStreamReq req(bucket_name, object_name, os);
qcloud_cos::GetObjectByStreamResp resp;
qcloud_cos::CosResult result = cos.GetObject(req, &resp);
if (result.IsSucc()) {
// 下载成功,可以调用 GetObjectByStreamResp 的成员函数
} else {
// 下载失败,可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等
}

请求示例3:多线程下载文件到本地

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000";
std::string object_name = "object_name";
std::string local_path = "/tmp/object_name";

// request 需要提供 appid、bucketname、object 以及本地的路径(包含文件名)
qcloud_cos::MultiGetObjectReq req(bucket_name, object_name, local_path);
qcloud_cos::MultiGetObjectResp resp;
qcloud_cos::CosResult result = cos.GetObject(req, &resp);
if (result.IsSucc()) {
// 下载成功,可以调用 MultiGetObjectResp 的成员函数
} else {
// 下载失败,可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等
}

参数说明

参数
参数描述
类型
是否必填
req
GetObject 操作的请求
GetObjectByFileReq/GetObjectByStreamReq/MultiGetObjectReq
resp
GetObject 操作的响应
GetObjectByFileResp/GetObjectByStreamResp/MultiGetObjectResp
成员函数如下:
// 设置响应头部中的 Content-Type 参数
void SetResponseContentType(const std::string& str);

// 设置响应头部中的 Content-Language 参数
void SetResponseContentLang(const std::string& str);

// 设置响应头部中的 Content-Expires 参数
void SetResponseExpires(const std::string& str);

// 设置响应头部中的 Cache-Control 参数
void SetResponseCacheControl(const std::string& str);

// 设置响应头部中的 Content-Disposition 参数
void SetResponseContentDisposition(const std::string& str);

// 设置响应头部中的 Content-Encoding 参数
void SetResponseContentEncoding(const std::string& str);

GetObjectResp 除了读取公共头部的成员函数外,还提供以下成员函数:
// 获取 Object 最后被修改的时间, 字符串格式 Date, 类似"Wed, 28 Oct 2014 20:30:00 GMT"
std::string GetLastModified();

// 获取 Object type, 表示 Object 是否可以被追加上传,枚举值:normal 或者 appendable
std::string GetXCosObjectType();

// 获取 Object 的存储类别,枚举值:STANDARD,STANDARD_IA
std::string GetXCosStorageClass();

// 以 map 形式返回所有自定义的 meta, map 的 key 均不包含"x-cos-meta-"前缀
std::map<std::string, std::string> GetXCosMetas();

// 获取自定义的 meta, 参数可以为 x-cos-meta-*中的*
std::string GetXCosMeta(const std::string& key);

// 获取 Server 端加密使用的算法
std::string GetXCosServerSideEncryption();

复制对象

复制文件到目标路径。

方法原型

CosResult PutObjectCopy(const PutObjectCopyReq& req, PutObjectCopyResp* resp)

请求示例1:复制对象

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);
std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "sevenyou";
qcloud_cos::PutObjectCopyReq req(bucket_name, object_name);
req.SetXCosCopySource("sevenyousouthtest-12345656.cn-south.myqcloud.com/sevenyou_source_obj");
qcloud_cos::PutObjectCopyResp resp;
qcloud_cos::CosResult result = cos.PutObjectCopy(req, &resp);

请求示例2:修改对象元数据

qcloud_cos::PutObjectCopyReq req(bucket_name, object_name);
req.SetXCosMeta("key1", "val1"); // 自定义元数据
req.SetXCosMeta("key2", "val2"); // 自定义元数据
req.SetXCosMetadataDirective("Replaced"); // 必须加这行
qcloud_cos::PutObjectCopyResp resp;
qcloud_cos::CosResult result = cos.PutObjectCopy(req, &resp);

请求示例3:修改对象存储类型

qcloud_cos::PutObjectCopyReq req(bucket_name, object_name);
req.SetXCosStorageClass("STANDARD_IA");
req.SetXCosMetadataDirective("Replaced"); // 必须加这行
qcloud_cos::PutObjectCopyResp resp;
qcloud_cos::CosResult result = cos.PutObjectCopy(req, &resp);

参数说明

参数
参数描述
类型
是否必填
req
PutObjectCopy 操作的请求
PutObjectCopyReq
resp
PutObjectCopy 操作的响应
PutObjectCopyResp
PutObjectCopyReq 包含以下成员函数:
// 源文件 URL 路径,可以通过 versionid 子资源指定历史版本
void SetXCosCopySource(const std::string& str);

// 是否拷贝元数据,枚举值:Copy, Replaced,默认值 Copy。
// 假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制;
// 假如标记为 Replaced,按 Header 信息修改元数据。
// 当目标路径和原路径一致,即用户试图修改元数据时,必须为 Replaced
void SetXCosMetadataDirective(const std::string& str);

// 当 Object 在指定时间后被修改,则执行操作,否则返回 412。
// 可与 x-cos-copy-source-If-None-Match 一起使用,与其他条件联合使用返回冲突。
void SetXCosCopySourceIfModifiedSince(const std::string& str);

// 当 Object 在指定时间后未被修改,则执行操作,否则返回 412。
// 可与 x-cos-copy-source-If-Match 一起使用,与其他条件联合使用返回冲突。
void SetXCosCopySourceIfUnmodifiedSince(const std::string& str);

// 当 Object 的 Etag 和给定一致时,则执行操作,否则返回 412。
// 可与x-cos-copy-source-If-Unmodified-Since 一起使用,与其他条件联合使用返回冲突
void SetXCosCopySourceIfMatch(const std::string& str);

// 当 Object 的 Etag 和给定不一致时,则执行操作,否则返回 412。
// 可与 x-cos-copy-source-If-Modified-Since 一起使用,与其他条件联合使用返回冲突。
void SetXCosCopySourceIfNoneMatch(const std::string& str);

// x-cos-storage-class 设置 Object 的存储级别,枚举值:STANDARD,STANDARD_IA
// 默认值:STANDARD
void SetXCosStorageClass(const std::string& storage_class);

// 定义 Object 的 ACL 属性,有效值:private,public-read
// 默认值:private
void SetXCosAcl(const std::string& str);

// 赋予被授权者读的权限。格式:id="[OwnerUin]"
void SetXCosGrantRead(const std::string& str);

// 赋予被授权者所有的权限。格式:id="[OwnerUin]"
void SetXCosGrantFullControl(const std::string& str);

// 允许用户自定义的头部信息,将作为 Object 元数据返回.大小限制2K
void SetXCosMeta(const std::string& key, const std::string& value);

/// 设置 Server 端加密使用的算法, 目前支持 AES256
void SetXCosServerSideEncryption(const std::string& str);

PutObjectCopyResp 包含以下成员函数:
// 返回文件的 MD5 算法校验值。ETag 的值可以用于检查 Object 的内容是否发生变化。
std::string GetEtag();

// 返回文件最后修改时间,GMT 格式
std::string GetLastModified();

// 返回版本号
std::string GetVersionId();

/// Server 端加密使用的算法
std::string GetXCosServerSideEncryption();


删除单个对象

功能说明

在存储桶中删除指定对象。

方法原型

CosResult DeleteObject(const DeleteObjectReq& req, DeleteObjectResp* resp)

请求示例

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "test_object";

qcloud_cos::DeleteObjectReq req(bucket_name, object_name);
qcloud_cos::DeleteObjectResp resp;
qcloud_cos::CosResult result = cos.DeleteObject(req, &resp);

// 调用成功,调用 resp 的成员函数获取返回内容
if (result.IsSucc()) {
// ...
} else {
// 可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等
}

参数说明

参数
参数描述
类型
是否必填
req
DeleteObject 操作的请求
DeleteObjectReq
resp
DeleteObject 操作的响应
DeletObjectResp

删除多个对象

功能说明

在存储桶中批量删除对象。

方法原型

CosResult DeleteObjects(const DeleteObjectsReq& req, DeleteObjectsResp* resp)

请求示例

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket

std::vector<std::string> objects;
std::vector<ObjectVersionPair> to_be_deleted;
objects.push_back("batch_delete_test_00");
objects.push_back("batch_delete_test_01");
objects.push_back("batch_delete_test_02");
objects.push_back("batch_delete_test_03");
for (size_t idx = 0; idx < objects.size(); ++idx) {
ObjectVersionPair pair;
pair.m_object_name = objects[idx];
to_be_deleted.push_back(pair);
}
qcloud_cos::DeleteObjectsReq req(bucket_name, to_be_deleted);
qcloud_cos::DeleteObjectsResp resp;
qcloud_cos::CosResult result = cos.DeleteObjects(req, &resp);
// 调用成功,调用 resp 的成员函数获取返回内容
if (result.IsSucc()) {
// ...
} else {
// 可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等
}

参数说明

参数
参数描述
类型
是否必填
req
DeleteObjects 操作的请求
DeleteObjectsReq
resp
DeleteObjects 操作的响应
DeletObjectsResp
DeleteObjectsReq 包含以下成员函数:
// 添加对象,并指定版本
void AddObjectVersion(const std::string& object, const std::string& version)
// 添加对象,非多版本
void AddObject(const std::string& object)
DeleteObjectsResp 包含以下成员函数:
// 获取删除成功的 objects 信息
std::vector<DeletedInfo> GetDeletedInfos() const

// 获取删除失败的 objects 信息
std::vector<ErrorInfo> GetErrorMsgs() const
对应 DeletedInfo 和 ErrorInfo 的结构如下:
struct DeletedInfo{
std::string m_key; // object key
std::string m_version_id; //version_id
bool m_delete_marker; // is delete marker
std::string m_delete_marker_version_id; // if delete marker, so version id
}
struct ErrorInfo{
std::string m_key; // object key
std::string m_code; // error code
std::string m_message; // error message
std::string m_version_id; // version id
}

恢复归档对象

功能说明

将归档类型的对象取回访问。

方法原型

CosResult PostObjectRestore(const PostObjectRestoreReq& req, PostObjectRestoreResp* resp)

请求示例

qcloud_cos::CosConfig config("./config.json");
qcloud_cos::CosAPI cos(config);

std::string bucket_name = "examplebucket-1250000000"; // 替换为用户的存储桶名,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称:https://console.cloud.tencent.com/cos5/bucket
std::string object_name = "sevenyou";

{
qcloud_cos::PostObjectRestoreReq req(bucket_name, object_name);
req.SetExiryDays(30);
req.SetTier("Standard");
qcloud_cos::PostObjectRestoreResp resp;
qcloud_cos::CosResult result = cos.PostObjectRestore(req, &resp);
// 调用成功,调用 resp 的成员函数获取返回内容
if (result.IsSucc()) {
// ...