【发布时间】:2013-08-11 11:38:46
【问题描述】:
我正在尝试列出我的 Amazon S3 存储桶中的所有项目。 我有几个嵌套目录。
- dir1/
- dir1/subdir1/
- dir1/subdir2/
- dir1/subdir3/
- dir2/
- dir2/subdir1/
- dir2/subdir2/
- ...
每个子目录包含多个文件。 我需要用这个文件结构得到一个嵌套数组。
我正在使用适用于 PHP 2.4.2 的 Amazon AWS 开发工具包
这是我的代码:
$dir = 's3://bucketname';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
foreach ($iterator as $file) {
echo $file->getType() . ': ' . $file . "\n";
}
但是,结果只列出存储桶中的文件,而不是目录/子目录(带前缀的文件)或目录本身中的文件。
如果我遍历($dir.'/folder'),则根本没有结果。
我将RecursiveIteratorIterator::SELF_FIRST 作为第二个参数传递给迭代器的构造函数,我只得到第一级目录——没有子目录。
如何使用 AWS 流包装器和 PHP RecursiveIterator 列出存储桶中所有目录中的所有文件?
我希望有人可以帮助我。
谢谢!
【问题讨论】:
-
查看stackoverflow.com/a/4165046/208809 是否解决了您的问题,例如将
RecursiveIteratorIterator::SELF_FIRST作为第二个参数传递给RecursiveIteratorIterator的构造函数。如果是这样,请考虑删除您的问题。如果不是edit你的问题要指出这不是迭代模式的问题。 -
谢谢@Gordon。试过了,并没有改变问题本身(没有显示子目录或子目录中的文件)。我编辑了问题。
-
您列出的存储桶的实际名称是否包含“.mydomain.com”?如果存储桶名称实际上类似于“bucketname”,那么您只能在 $dir 变量中使用“s3://bucketname”。
-
@MichaelDowling:是的,存储桶的实际名称包含我的 domain.com - 我相应地编辑了帖子,谢谢!
-
我们昨晚刚刚发布了 SDK。你能检查一下它是否解决了你的问题吗?
标签: php amazon-web-services amazon-s3 stream-wrapper recursiveiterator