首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >亚马逊s3文件夹问题

亚马逊s3文件夹问题
EN

Stack Overflow用户
提问于 2011-02-08 20:20:01
回答 5查看 8.9K关注 0票数 4

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

我在未设计的亚马逊s3类中遇到的问题是它不支持文件夹,它只会显示完整的文件名,它为您提供了这三个选项。

代码语言:javascript
运行
复制
[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的文件夹

我可以做到以下几点。

代码语言:javascript
运行
复制
$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文件夹中的文件?

我已经尝试了以下几种方法。

代码语言:javascript
运行
复制
$test = substr($fname, 0, strpos($fname, '/'));

$more = explode("/", $fname);

谁能想出解决这个问题的办法?

谢谢

EN

回答 5

Stack Overflow用户

发布于 2011-02-13 10:00:43

亚马逊S3是一个平面文件系统。没有文件夹这回事。只有一些很长的文件名,里面有斜杠。大多数S3工具都会直观地将它们显示为文件夹,但这不是S3在幕后的工作方式。

我以前从来没有使用过未设计的亚马逊S3类,所以我不确定这个库的细节。我使用CloudFusion的S3类很长一段时间了,直到Amazon把它派生出来,创建了官方的PHP (这就是我现在使用的)。

在PHP SDK中,您可以执行以下操作:

代码语言:javascript
运行
复制
$s3 = new AmazonS3();

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

print_r($response->body);

这将列出S3存储桶中具有文件名的所有对象(不是真正的文件夹,记得吗?)这从Music/dnb/开始。

票数 8
EN

Stack Overflow用户

发布于 2011-02-13 17:47:57

代码语言:javascript
运行
复制
$contents = $s3->getBucket("MY-BUCKET", $amazon_folder, null, null, "/");
票数 2
EN

Stack Overflow用户

发布于 2011-02-08 20:58:19

在Amazon API中没有办法绕过这一点。你需要原样使用prefix进行filter your amazon request,然后过滤掉客户端上的‘子文件夹’。

实际上,最好的解决方案不是尝试导航您的S3存储。相反,您应该在适当的数据库(MySql、SimpleDb等)中维护文件的“索引”,以便搜索和查询,然后在需要时从S3检索文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4932892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档