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

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

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

3 ответов


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

на конфиг/файловые системы.в PHP в массиве дисков добавьте нужную папку. The общественные папка в этом случае.

    'disks' => [

    'local' => [
        'driver' => 'local',
        'root'   => storage_path().'/app',
    ],

    'public' => [
        'driver' => 'local',
        'root'   => public_path(),
    ],

    's3' => '....'

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

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

переменная $exists скажет вам, если .формат JPG внутри the общественные


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

или

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

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


рассмотрите возможность использования glob. Не нужно усложнять PHP barebones вспомогательными классами / методами в Laravel 5.

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