我需要关于亚马逊s3文件夹的帮助,
我在未设计的亚马逊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
)因此,正如您所看到的,它为您提供了选项名称、时间、大小和散列、无文件夹选项,所以我正在尝试找到一个解决方法。
从上面你可以看到,可卡因音乐是在音乐文件夹中,他们也是一个文件夹VIP_Shufunk_192.mp3 /dnb/,其中包含许多关闭的文件。
我要做的是找到一个什么,只是为了显示在某个文件夹中的文件。
到目前为止我已经试过了。
好的,如果我有一个名为Music的文件夹
我可以做到以下几点。
$amazon_folder = "Music";
$contents = $s3->getBucket("MY-BUCKET",$amazon_folder);
foreach ($contents as $file){
$fname = $file['name'];
// So i need some code
}好的,这将显示我在音乐中的所有文件,但问题是它显示了所有内容,包括音乐文件夹中的文件夹。
我不希望它显示音乐文件夹中某个文件夹中的文件,例如Music/Dnb我不希望它只显示音乐文件夹中的文件,而不显示Music/dnb文件夹中的文件?
我已经尝试了以下几种方法。
$test = substr($fname, 0, strpos($fname, '/'));
$more = explode("/", $fname);谁能想出解决这个问题的办法?
谢谢
发布于 2011-02-13 10:00:43
亚马逊S3是一个平面文件系统。没有文件夹这回事。只有一些很长的文件名,里面有斜杠。大多数S3工具都会直观地将它们显示为文件夹,但这不是S3在幕后的工作方式。
我以前从来没有使用过未设计的亚马逊S3类,所以我不确定这个库的细节。我使用CloudFusion的S3类很长一段时间了,直到Amazon把它派生出来,创建了官方的PHP (这就是我现在使用的)。
在PHP SDK中,您可以执行以下操作:
$s3 = new AmazonS3();
$response = $s3->list_objects($bucket, array(
'prefix' => 'Music/dnb/'
));
print_r($response->body);这将列出S3存储桶中具有文件名的所有对象(不是真正的文件夹,记得吗?)这从Music/dnb/开始。
发布于 2011-02-13 17:47:57
$contents = $s3->getBucket("MY-BUCKET", $amazon_folder, null, null, "/");发布于 2011-02-08 20:58:19
在Amazon API中没有办法绕过这一点。你需要原样使用prefix进行filter your amazon request,然后过滤掉客户端上的‘子文件夹’。
实际上,最好的解决方案不是尝试导航您的S3存储。相反,您应该在适当的数据库(MySql、SimpleDb等)中维护文件的“索引”,以便搜索和查询,然后在需要时从S3检索文件。
https://stackoverflow.com/questions/4932892
复制相似问题