Я пытаюсь перечислить все элементы в моем ковше Amazon S3. У меня есть несколько вложенных каталогов.Итерирование через ведро S3 с оберткой потока
- dir1/
- dir1/subdir1/
- dir1/subdir2/
- dir1/subdir3/
- dir2/
- dir2/subdir1/
- dir2/subdir2/
- ...
В каждом поддиректории содержится несколько файлов. Мне нужно получить вложенный массив с этой файловой структурой.
Я использую Amazon AWS SDK для PHP 2.4.2
Это мой код:
$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 для отображения всех файлов во всех каталогах в моем ковше?
Я надеюсь, что кто-то может мне помочь.
Спасибо!
См., Если http://stackoverflow.com/a/4165046/208809 решает вашу проблему, например. передать 'RecursiveIteratorIterator :: SELF_FIRST' как второй аргумент в конструктор' RecursiveIteratorIterator'. Если да, рассмотрите вопрос об удалении вашего вопроса. Если он не отредактировал ваш вопрос, чтобы указать, что это не проблема в режиме итерации. – Gordon
Спасибо @ Gordon. Пробовал, сам не изменил проблему (в подкаталогах не было подкаталогов или файлов). Я редактировал вопрос. – basbebe
В личном названии вашего ведра содержится «.mydomain.com»? Если имя bucket на самом деле что-то вроде «bucketname», вы должны использовать «s3: // bucketname» в переменной $ dir. –