API | 操作名 | 操作描述 |
设置存储桶 ACL | 设置指定存储桶的访问权限控制列表(ACL) | |
查询存储桶 ACL | 查询指定存储桶的访问权限控制列表(ACL) |
API | 操作名 | 操作描述 |
设置对象 ACL | 设置存储桶中某个对象的访问控制列表 | |
查询对象 ACL | 查询对象的访问控制列表 |
CosResult PutBucketACL(const PutBucketACLReq& request, PutBucketACLResp* response);
qcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);std::string bucket_name = "examplebucket-1250000000";// PutBucketACLReq 的构造函数需要传入 bucket_nameqcloud_cos::PutBucketACLReq req(bucket_name);qcloud_cos::PutBucketACLResp resp;// 设置 ACL 配置(可以通过 Body、Header 两种方式,但只能二选一,否则会有冲突)// 1.通过 header 设置 ACLreq.SetXCosAcl("public-read-write");// 2.通过 body 设置 ACLqcloud_cos::Owner owner = {"qcs::cam::uin/00000000001:uin/00000000001", "qcs::cam::uin/00000000001:uin/00000000001" };qcloud_cos::Grant grant;req.SetOwner(owner);grant.m_grantee.m_type = "Group";grant.m_grantee.m_uri = "http://cam.qcloud.com/groups/global/AllUsers";grant.m_perm = "READ";req.AddAccessControlList(grant);qcloud_cos::PutBucketACLResp resp;qcloud_cos::CosResult result = cos.PutBucketACL(req, &resp);if (result.IsSucc()) {// 请求成功} else {// 请求失败,调用 CosResult 的成员函数输出错误信息,例如 requestID 等}
参数 | 参数描述 | 类型 | 是否必填 |
req | PutBucketACL 操作的请求 | PutBucketACLReq | 是 |
resp | PutBucketACL 操作的响应 | PutBucketACLResp | 是 |
// 定义 Bucket 的 ACL 属性,有效值:private,public-read-write,public-read// 默认值:privatevoid 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-write: id=" ",id=" "./// 当需要给子账号授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",// 当需要给主账号授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"void SetXCosGrantWrite(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);// Bucket 持有者 IDvoid SetOwner(const Owner& owner);// 设置被授权者信息与权限信息void SetAccessControlList(const std::vector<Grant>& grants);// 添加单个 Bucket 的授权信息void AddAccessControlList(const Grant& grant);
struct Owner {// 存储桶持有者信息std::string m_id; // owner 的完整 ID,格式为:qcs::cam::uin/<OwnerUin>:uin/<SubUin>std::string m_display_name; // owner 的描述};struct Grantee {// type 类型可以为 RootAccount, SubAccount// 当 type 类型为 RootAccount 时,可以在 id 中 uin 填写账号 ID,也可以用 anyone(指代所有类型用户)代替 uin/<OwnerUin> 和 uin/<SubUin>// 当 type 类型为 RootAccount 时,uin 代表主账号,Subaccount 代表子账号std::string m_type;std::string m_id; // qcs::cam::uin/<OwnerUin>:uin/<SubUin>std::string m_display_name; // 非必选std::string m_uri;};struct Grant {Grantee m_grantee; // 被授权者资源信息std::string m_perm; // 指明授予被授权者的权限信息,可选值"READ","WRITE","FULL_CONTROL"};
CosResult GetBucketACL(const GetBucketACLReq& req, GetBucketACLResp* resp)
qcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);std::string bucket_name = "examplebucket-1250000000";qcloud_cos::GetBucketACLReq req(bucket_name);qcloud_cos::GetBucketACLResp resp;qcloud_cos::CosResult result = cos.GetBucketACL(req, &resp);if (result.IsSucc()) {// 请求成功,调用 resp 的成员函数获取返回内容} else {// 请求失败,可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等}
参数 | 参数描述 | 类型 | 是否必填 |
req | GetBucketACL 操作的请求 | GetBucketACLReq | 是 |
resp | GetBucketACL 操作的响应 | GetBucketACLResp | 是 |
std::string GetOwnerID();std::string GetOwnerDisplayName();std::vector<Grant> GetAccessControlList();
CosResult PutObjectACL(const PutObjectACLReq& req, PutObjectACLResp* resp)
qcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);std::string bucket_name = "examplebucket-1250000000";std::string object_name = "test";// 1 设置 ACL 配置(通过 Body, 设置 ACL 可以通过 Body、Header 两种方式,但只能二选一,否则会有冲突){qcloud_cos::PutObjectACLReq req(bucket_name, object_name);qcloud_cos::Owner owner = {"qcs::cam::uin/xxxxx:uin/xxx", "qcs::cam::uin/xxxxxx:uin/xxxxx" };qcloud_cos::Grant grant;req.SetOwner(owner);grant.m_grantee.m_type = "Group";grant.m_grantee.m_uri = "http://cam.qcloud.com/groups/global/AllUsers";grant.m_perm = "READ";req.AddAccessControlList(grant);qcloud_cos::PutObjectACLResp resp;qcloud_cos::CosResult result = cos.PutObjectACL(req, &resp);if (result.IsSucc()) {// 请求成功} else {// 请求失败,可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等}}// 2 设置 ACL 配置(通过 Header, 设置 ACL 可以通过 Body、Header 两种方式,但只能二选一,否则会有冲突){qcloud_cos::PutObjectACLReq req(bucket_name, object_name);req.SetXCosAcl("public-read-write");qcloud_cos::PutObjectACLResp resp;qcloud_cos::CosResult result = cos.PutObjectACL(req, &resp);if (result.IsSucc()) {// 请求成功} else {// 请求失败,可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等}}
参数 | 参数描述 | 类型 | 是否必填 |
req | PutObjectACL 操作的请求 | PuttObjectACLReq | 是 |
resp | PutObjectACL 操作的响应 | PutObjectACLResp | 是 |
// 定义 Object 的 ACL 属性,有效值:private,public-read// 默认值:privatevoid SetXCosAcl(const std::string& str);// 赋予被授权者读的权限。格式:id="[OwnerUin]"void SetXCosGrantRead(const std::string& str);// 赋予被授权者所有的权限。格式:id="[OwnerUin]"void SetXCosGrantFullControl(const std::string& str);// Object 持有者 IDvoid SetOwner(const Owner& owner);// 设置被授权者信息与权限信息void SetAccessControlList(const std::vector<Grant>& grants);// 添加单个 Object 的授权信息void AddAccessControlList(const Grant& grant);
struct Grantee {// type 类型可以为 RootAccount, SubAccount// 当 type 类型为 RootAccount 时,可以在 id 中 uin 填写账号 ID,也可以用 anyone(指代所有类型用户)代替 uin/<OwnerUin> 和 uin/<SubUin>// 当 type 类型为 RootAccount 时,uin 代表主账号账号,Subaccount 代表子账号账号std::string m_type;std::string m_id; // qcs::cam::uin/<OwnerUin>:uin/<SubUin>std::string m_display_name; // 非必选std::string m_uri;};struct Grant {Grantee m_grantee; // 被授权者资源信息std::string m_perm; // 指明授予被授权者的权限信息,可选值"READ","WRITE","FULL_CONTROL"};
CosResult GetObjectACL(const GetObjectACLReq& req, GetObjectACLResp* resp)
qcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);std::string bucket_name = "examplebucket-1250000000";std::string object_name = "exampleobject";// GetObjectACLReq 的构造函数需要传入 Object_nameqcloud_cos::GetObjectACLReq req(bucket_name, object_name);qcloud_cos::GetObjectACLResp resp;qcloud_cos::CosResult result = cos.GetObjectACL(req, &resp);if (result.IsSucc()) {// 请求成功,调用 resp 的成员函数获取返回内容} else {// 请求失败,可以调用 CosResult 的成员函数输出错误信息,例如 requestID 等}
参数 | 参数描述 | 类型 | 是否必填 |
req | GetObjectACL 操作的请求 | GetObjectACLReq | 是 |
resp | GetObjectACL 操作的响应 | GetObjectACLResp | 是 |
std::string GetOwnerID();std::string GetOwnerDisplayName();std::vector<Grant> GetAccessControlList();
本页内容是否解决了您的问题?