亚马逊s3文件夹问题

iSi*_*ign 4 amazon-s3 amazon-web-services

我需要关于亚马逊s3文件夹的帮助,

我通过unsigned获得亚马逊s3类的问题是它不支持文件夹,它只会显示完整的文件名,它会从阵列中提供这三个选项.

[Music/] => Array
        (
            [name] => Music/
            [time] => 1296576896
            [size] => 0
            [hash] => d41d8cd98f00b204e9800998ecf8427e
        )


[Music/Cocaine VIP_Shufunk_192.mp3] => Array
        (
            [name] => Music/dnb/Cocaine VIP_Shufunk_192.mp3
            [time] => 1296577893
            [size] => 8300933
            [hash] => edfb1bcfad7edfaccd901b95541e8d45
        )

[Music/dnb/Crazy Talk_Tantrum Desire_192.mp3] => Array
        (
            [name] => Music/dnb/Crazy Talk_Tantrum Desire_192.mp3
            [time] => 1296577988
            [size] => 9266562
            [hash] => 0eb4ca6b53d78e1f976df9b488e0f4bf
        )

[Music/dnb/Day_N_Nite_(TC_Remix)_Kid_Cudi_vs._Crookers_192.mp3] => Array
        (
            [name] => Music/dnb/Day_N_Nite_(TC_Remix)_Kid_Cudi_vs._Crookers_192.mp3
            [time] => 1296578094
            [size] => 6597705
            [hash] => 376ed9479afc9657b40bc4fc3e885b65
        )
Run Code Online (Sandbox Code Playgroud)

所以你可以看到它给你选项名称时间大小和哈希没有文件夹选项所以我试图找到一个解决方案.

从上面你可以看到可卡因VIP_Shufunk_192.mp3在音乐文件夹中,它们也是一个文件夹Music/dnb /,其中包含很多文件.

我要做的是找到一个只显示某个文件夹中的文件的内容.

到目前为止,我试过了.

好的,如果我有一个名为音乐的文件夹

我可以拥有以下内容.

$amazon_folder = "Music";

$contents = $s3->getBucket("MY-BUCKET",$amazon_folder);

foreach ($contents as $file){

$fname = $file['name'];

// So i need some code


}
Run Code Online (Sandbox Code Playgroud)

好的,这将显示我在音乐中的所有文件,但问题是它显示包括音乐文件夹中的文件夹在内的所有内容.

我不希望它显示音乐文件夹中的文件夹内的文件说音乐/ Dnb我不希望它显示这些文件只有音乐文件夹中的文件而不是音乐/ dnb文件夹???

我试过以下.

$test = substr($fname, 0, strpos($fname, '/'));

$more = explode("/", $fname);
Run Code Online (Sandbox Code Playgroud)

任何人都可以想到这个解决方案???

谢谢

Sky*_*son 8

Amazon S3是一个平面文件系统.没有文件夹这样的东西.简单的文件名很长,其中包含斜杠.大多数S3工具都会在视觉上将它们显示为文件夹,但这并不是S3的工作原理.

我之前从未使用过Undesigned Amazon S3类,因此我不确定该库的具体细节.我使用CloudFusion的S3类很长一段时间,直到亚马逊分叉它来创建官方PHP SDK(这是我现在使用的).

在PHP SDK中,您可以:

$s3 = new AmazonS3();

$response = $s3->list_objects($bucket, array(
    'prefix' => 'Music/dnb/'
));

print_r($response->body);
Run Code Online (Sandbox Code Playgroud)

这将列出S3存储桶中具有文件名(没有真正的文件夹,请记住?)的所有对象Music/dnb/.