在Laravel中,如何获取公用文件夹中所有文件的列表?

2022-08-30 11:22:24

我想自动生成公用文件夹中所有图像的列表,但我似乎找不到任何可以帮助我执行此操作的对象。

该类似乎是该作业的良好候选项,但它只允许我在公用文件夹外部的存储文件夹中搜索文件。Storage


答案 1

您可以为存储类创建另一个磁盘。在我看来,这将是您最好的解决方案。

配置/文件系统中.php磁盘阵列中添加所需的文件夹。本例中的公用文件夹。

    'disks' => [

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

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

    's3' => '....'

然后,可以通过以下方式使用存储类在公用文件夹中工作:

$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

稍后编辑:

人们抱怨说,我的答案没有给出列出文件的确切方法,但我的意图是永远不会删除一行代码,操作复制/粘贴到他的项目中。我想“教”他,如果我能用这个词,如何使用laravel Storage,而不仅仅是粘贴一些代码。

无论如何,列出文件的实际方法是:

$files = Storage::disk('public')->files($directory);

// Recursive...
$files = Storage::disk('public')->allFiles($directory);

配置部分和背景在上面,在我原来的答案中。


答案 2

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

或只是某种类型的文件

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

请注意,laravel 磁盘具有 和 。 是递归的。files()allfiles()allfiles


推荐