В Laravel 5, как я могу получить список всех файлов в общей папке?

Я хотел бы автоматически генерировать список всех изображений в моей общей папке, но я не могу найти какой-либо объект, который мог бы мне помочь.

Класс Storage кажется хорошим кандидатом на работу, но он позволяет мне искать файлы в папке хранения, находящейся за пределами общей папки.

Вы можете создать другой диск для класса Storage. Это было бы лучшим решением для вас, на мой взгляд.

В config / filesystems.php в массиве дисков добавьте нужную папку. Общая папка в этом случае.

  'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path().'/app', ], 'public' => [ 'driver' => 'local', 'root' => public_path(), ], 's3' => '....' 

Затем вы можете использовать класс Storage для работы в своей общей папке следующим образом:

 $exists = Storage::disk('public')->exists('file.jpg'); 

Переменная $ exists будет сообщать вам, существует ли файл file.jpg внутри общей папки, поскольку «общедоступный» диск диска указывает на общую папку проекта.

Вы можете использовать все методы сеанса из документации, используя свой собственный диск. Просто добавьте часть диска ('public').

  Storage::disk('public')-> // any method you want from 

http://laravel.com/docs/5.0/filesystem#basic-usage

Рассмотрим использование glob. Нет необходимости переназначать баребоны PHP с помощью вспомогательных классов / методов в Laravel 5.

 <?php foreach (glob("/location/for/public/images/*.png") as $filename) { echo "$filename size " . filesize($filename) . "\n"; } ?> 

Storage::disk('local')->files('optional_dir_name');

или

array_filter(Storage::disk('local')->files(), function ($item) {return strpos($item, 'png');});

Обратите внимание, что на диске laravel есть files() и allfiles() . allfiles рекурсивный.