对象存储 OSSURL签名授权
详细解答可以参考官方帮助文档可以通过生成签名URL的形式提供给用户一个临时的访问URL。在生成URL时,可以指定URL过期的时间,从而限制用户长时间访问。
生成签名url通过oss_gen_signed_url接口生成请求url签名。
生成下载请求的url签名aos_pool_t *p;oss_request_options_t *options;aos_http_request_t *req;char *url_str;char *bucket_name = '';char *object_name = '';aos_string_t bucket;aos_string_t object;apr_time_t now;int64_t expire_time; int one_hour = 3600; /* 单位:秒*/aos_pool_create(&p, NULL);/* 创建并初始化options */options = oss_request_options_create(p);init_options(options);/* 初始化参数 */aos_str_set(&bucket, bucket_name);aos_str_set(&object, object_name);req = aos_http_request_create(p);req->method = HTTP_GET;now = apr_time_now(); //millisecondexpire_time = now / 1000000 + one_hour;/* 生成签名url */url_str = oss_gen_signed_url(options, &bucket, &object, expire_time, req);printf('临时下载url:%s\n', url_str);aos_pool_destroy(p);
生成上传文件请求的url签名:aos_pool_t *p;oss_request_options_t *options;aos_http_request_t *req;char *bucket_name = '';char *object_name = '';aos_string_t bucket;aos_string_t object;apr_time_t now;int64_t expire_time; int one_hour = 3600;char *url_str = NULL;aos_pool_create(&p, NULL);/* 创建并初始化options */options = oss_request_options_create(p);init_options(options);/* 初始化参数 */aos_str_set(&bucket, bucket_name);aos_str_set(&object, object_name);req = aos_http_request_create(p);req->method = HTTP_PUT;now = apr_time_now(); //millisecondexpire_time = now / 1000000 + one_hour;/* 生成签名url */url_str = oss_gen_signed_url((options, &bucket, &object, expire_time, req);printf('临时上传url:%s\n', url_str);aos_pool_destroy(p);
使用签名URL下载文件aos_pool_t *p;oss_request_options_t *options;aos_http_request_t *req;aos_table_t *headers;aos_table_t *resp_headers;char *bucket_name = '';char *object_name = '';char *filepath = '';aos_string_t bucket;aos_string_t object;aos_string_t file;char *url_str;apr_time_t now;int64_t expire_time; int one_hour = 3600;aos_pool_create(&p, NULL);/* 创建并初始化options */options = oss_request_options_create(p);init_options(options);/* 初始化参数 */aos_str_set(&bucket, bucket_name);aos_str_set(&object, object_name);aos_str_set(&file, filepath);headers = aos_table_make(p, 0);req = aos_http_request_create(p);req->method = HTTP_GET;now = apr_time_now(); /* 单位:微秒 */expire_time = now / 1000000 + one_hour;/* 生成签名url */url_str = oss_gen_signed_url(options, &bucket, &object, expire_time, req);/* 使用签名url下载文件 */s = oss_get_object_to_file_by_url(options, url_str, headers, &file, &resp_headers);if (aos_status_is_ok(s)) { printf('get object succeeded\n');} else { printf('get object failed\n');}aos_pool_destroy(p);
使用URL签名的方式上传文件aos_pool_t *p;int is_oss_domain = 1;//是否使用三级域名oss_request_options_t *options;aos_http_request_t *req;aos_table_t *headers;aos_table_t *resp_headers;char *bucket_name = '';char *object_name = '';char *filepath = '';aos_string_t bucket;aos_string_t object;aos_string_t file;char *url_str;apr_time_t now;int64_t expire_time; int one_hour = 3600;aos_pool_create(&p, NULL);/* 创建并初始化options */options = oss_request_options_create(p);init_options(options);/* 初始化参数 */aos_str_set(&bucket, bucket_name);aos_str_set(&object, object_name);aos_str_set(&file, filepath);headers = aos_table_make(p, 0);req = aos_http_request_create(p);req->method = HTTP_PUT;now = apr_time_now(); /* 单位:微秒*/expire_time = now / 1000000 + one_hour;/* 生成签名url */url_str = oss_gen_signed_url(options, &bucket, &object, expire_time, req);/* 使用签名url上传文件 */s = oss_put_object_from_file_by_url(options, url_str, &file, headers, &resp_headers);if (aos_status_is_ok(s)) { printf('put objects by signed url succeeded\n');} else { printf('put objects by signed url failed\n');}aos_pool_destroy(p);
赞0
踩1