对象存储 OSS下载文件到内存
详细解答可以参考官方帮助文档通过oss_get_object_to_buffer接口,可以实现将文件下载到内存中:
aos_pool_t *p;oss_request_options_t *options;aos_status_t *s;aos_table_t *headers;aos_table_t *params;aos_table_t *resp_headers;char *bucket_name = '';char *object_name = '';aos_string_t bucket;aos_string_t object;aos_list_t buffer;aos_buf_t *content;char *buf;int64_t len = 0;int64_t size = 0;int64_t pos = 0;aos_pool_create(&p, NULL);/* 创建并初始化options */options = oss_request_options_create(p);init_options(options);/* 初始化参数 */aos_str_set(&object, object_name);aos_str_set(&bucket, bucket_name);headers = aos_table_make(p, 0);params = aos_table_make(p, 0);/* 下载文件 */aos_list_init(&buffer);s = oss_get_object_to_buffer(options, &bucket, &object, &buffer, headers, params, &resp_headers);if (aos_status_is_ok(s)) { printf('get object succeeded\n'); /* 将下载内容拷贝到buffer中*/ len = aos_buf_list_len(&buffer); buf = aos_pcalloc(p, len + 1); buf[len] = '\0'; aos_list_for_each_entry(content, &buffer, node) { size = aos_buf_size(content); memcpy(buf + pos, content->pos, size); pos += size; }} else { printf('get object failed\n');}aos_pool_destroy(p);
注:
2.0.0相对于1.0.0版本,oss_get_object_to_buffer接口增加了params参数,同时headers和params允许为NULL,1.0.0及其之前版本不支持为NULLoss_get_object_to_buffer_by_url和oss_get_object_to_file_by_url参数也增加了params参数完整代码参考:GitHub
赞0
踩1