开发者社区> 问答> 正文

osslistobject 不能仅仅获取到当前目录的文件夹/文件列表


        
以下代码不能获取到文件夹信息
       int is_cname = 0;
    aos_pool_t *p;
    oss_request_options_t *options;
    aos_status_t *s;
    aos_table_t *resp_headers;
    aos_string_t bucket;
    oss_list_object_params_t *params;
    oss_list_object_content_t *content;
    int max_ret = 1000;
    char *key;
    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
     init_sample_request_options(options, is_cname);
    aos_str_set(&bucket, BUCKET_NAME);
    params = oss_create_list_object_params(p);
    params->max_ret = max_ret;
    aos_str_set(&params->prefix, "");
    aos_str_set(&params->delimiter, "/");
    //aos_str_set(&params->marker, "<查看文件的起点>");
    s = oss_list_object(options, &bucket, params, &resp_headers);
    if (aos_status_is_ok(s)) {
        printf("get object succeeded\n");
        /* 下载文件 */
        aos_list_for_each_entry(oss_list_object_content_t, content, &params->object_list, node) {
            TRACE( "\n %s", content->key.data);
            key = apr_psprintf(p, "%.*s", content->key.len, content->key.data);
        }
    } else {
        printf("get object failed\n");
    }
    aos_pool_destroy(p);
其他方式时又递归后去到深层目录的文件,而我只想后去一级的目录信息,怎么破。。?



展开
收起
wkewish 2016-10-18 10:56:30 6388 0
3 条回答
写回答
取消 提交回答
  • Reosslistobject 不能仅仅获取到当前目录的文件夹/文件列表
    我的一个总结:

    1,prefix=    Delimiter=,
        CommonPrefixes  为空。
        ObjectSummaries 包含各级文件夹下的文件。

    2,prefix=    Delimiter=/
      CommonPrefixes  为当前文件夹列表,不包含子文件夹,
      ObjectSummaries 当前文件夹下的文件。

      [prefix为空时,表示桶]

    3 prefix=罗伟玲201609/    Delimiter=
       CommonPrefixes: 为空
       ObjectSummaries 包含“罗伟玲201609/”下各级文件夹下的文件。

    4 prefix=罗伟玲201609/    Delimiter=/
       CommonPrefixes: 该文件夹下的所有文件夹。
       ObjectSummaries 只是当前文件夹下的文件。不包含下级文件夹下的文件。

    2016-10-18 11:34:11
    赞同 展开评论 打赏
  • Reosslistobject 不能仅仅获取到当前目录的文件夹/文件列表多谢
    多谢楼上。。。已经搞定了。。其实我没注意到文档的一个细节。。返回的数据节点不一样

    目录的数据在一个参数 common_prefix_list中。。。我误认为跟普通文件一起了。。

    -------------------------

    Reosslistobject 不能仅仅获取到当前目录的文件夹/文件列表
    没修正里的代码
            aos_list_for_each_entry(oss_list_object_content_t, content, &params->object_list, node) {
                TRACE( "\n %s", content->key.data);
                key = apr_psprintf(p, "%.*s", content->key.len, content->key.data);
            }
            aos_list_for_each_entry(oss_list_object_content_t, content, &params->common_prefix_list, node) {
                TRACE( "\n %s", content->key.data);
                key = apr_psprintf(p, "%.*s", content->key.len, content->key.data);
            }
    2016-10-18 11:25:10
    赞同 展开评论 打赏
  • aos_str_set(&params->prefix, "");              <<<< 表示看根目录,可以改成你要的“目录”,比如 "abc/",或是"abc/hello/"
    aos_str_set(&params->delimiter, "/");        <<<< 正确,表示你只看“当前目录”

    2016-10-18 11:05:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载