开发者社区> 问答> 正文

对象存储 OSS6. 下载指定文件

已解决

展开
收起
2018-02-24 02:26:37 856 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    您可以参考下面的代码简单地实现下载指定文件:

    1. aos_pool_t *p;
    2. oss_request_options_t *options;
    3. aos_status_t *s;
    4. aos_table_t *headers;
    5. aos_table_t *resp_headers;
    6. char *bucket_name = "<您的bucket名字>";
    7. char *object_name = "<您的object名字>";
    8. aos_string_t bucket;
    9. aos_string_t object;
    10. aos_list_t buffer;
    11. aos_buf_t *content;
    12. char *buf;
    13. int64_t len = 0;
    14. int64_t size = 0;
    15. int64_t pos = 0;
    16. aos_pool_create(&p, NULL);
    17. /* 创建并初始化options */
    18. options = oss_request_options_create(p);
    19. init_options(options);
    20. /* 初始化参数 */
    21. aos_str_set(&object, object_name);
    22. aos_str_set(&bucket, bucket_name);
    23. headers = aos_table_make(p, 1);
    24. /* 下载文件到buffer中 */
    25. aos_list_init(&buffer);
    26. s = oss_get_object_to_buffer(options, &bucket, &object, headers, &buffer, &resp_headers);
    27. /* 判断请求是否成功 */
    28. if (aos_status_is_ok(s)) {
    29. printf("get file succeeded\n");
    30. } else {
    31. printf("get file failed\n");
    32. }
    33. /* 从buffer中将aos_list_t类型的数据转为char*类型的,并计算读到的文件总长度 */
    34. len = aos_buf_list_len(&buffer);
    35. buf = aos_pcalloc(p, len + 1);
    36. buf[len] = '\0';
    37. aos_list_for_each_entry(content, &buffer, node) {
    38. size = aos_buf_size(content);
    39. memcpy(buf + pos, content->pos, size);
    40. pos += size;
    41. }
    42. /* 释放资源 */
    43. aos_pool_destroy(p);

    注:

    2018-02-26 13:43:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载