开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。
对象访问权限与桶访问权限类似,也可支持预定义访问策略(参见管理桶访问权限)或直接设置。
对象访问权限(ACL)可以通过三种方式设置:
上传对象时指定预定义访问策略。
调用set_object_acl_by_head指定预定义访问策略。
调用set_object_acl直接设置。
上传对象时指定预定义访问策略
以下代码展示如何在上传对象时指定预定义访问策略:
static void test_put_object_acl()
{
// 创建并初始化option
obs_options option;
init_obs_options(&option);
option.bucket_options.host_name = "";
option.bucket_options.bucket_name = "";
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
option.bucket_options.access_key = getenv("ACCESS_KEY_ID");
option.bucket_options.secret_access_key = getenv("SECRET_ACCESS_KEY");
// 初始化结构体put_properties,可以通过该结构体设置对象属性
obs_put_properties put_properties;
init_put_properties(&put_properties);
// 指定预定义访问策略
put_properties.canned_acl = OBS_CANNED_ACL_PUBLIC_READ_WRITE;
// 回调数据
put_file_object_callback_data data;
memset(&data, 0, sizeof(put_file_object_callback_data));
// 将要上传的文件读到回调数据中
data.infile = 0;
data.noStatus = 1;
content_length = read_bytes_from_file("", &data);
// 回调函数
obs_put_object_handler putobjectHandler =
{
{ &response_properties_callback, &response_complete_callback },
&put_buffer_object_data_callback
};
// 上传数据流
put_object(&option,"