如何以分层方式检索S3存储桶内容?

时间:2013-03-08 06:14:22

标签: php data-structures amazon-s3

我为商店工作的公司在其服务器上处理来自客户端的文件,并为每个客户端提供一个简单页面,该页面具有指向服务器上文件目录的链接。每个客户端都有一个文件夹,其中任何一个都可能有许多子文件夹。

我最近将此设置移至Amazon S3存储桶。我的问题是,当我检索存储桶的内容时(使用我在网上找到的S3 php类),它会返回存储桶内容的大量FLAT数组。我能够过滤这个,这样每个客户端只能看到他们的目录,但转换这种分层数据结构供以后显示,这对于屁股来说是一个巨大的痛苦。

是否有任何函数以某种方式返回S3项目以反映其结构?如果不是这可能会变成一个关于从大量平面阵列生成多维数组的问题。

谢谢! 克里斯

2 个答案:

答案 0 :(得分:0)

S3支持使用前缀和分隔符分层列出密钥,有关更多信息,请参阅docs

答案 1 :(得分:0)

使用前缀和分隔符来获取文件列表。

    <?php        
    $prefix = "jsondata/$folderName/$subFolderName/temp/";
    //$bucketname is a root bucket name   
    $ret = $s3->getObjectsByBucket($bucketname, array(
        'prefix'    => $prefix,
        'delimiter' => ''
    ));
    ?>