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

新手上路,请多包涵

我想在我的公用文件夹中自动生成所有图像的列表,但我似乎找不到任何可以帮助我做到这一点的对象。

Storage 类似乎是这项工作的好人选,但它只允许我在公用文件夹之外的存储文件夹中搜索文件。

原文由 kant312 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

您可以为 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 是否存在于 公共 文件夹中,因为 存储磁盘“公共” 指向项目的公共文件夹。

您可以将文档中的所有 存储 方法与您的自定义磁盘一起使用。只需添加 disk(‘public’) 部分。

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

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

后期编辑:

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

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

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

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

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

原文由 igs013 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 laravel 中只需使用:

 use Illuminate\Support\Facades\File;

    $path = public_path();
    $files = File::allFiles($path);

    dd($files);

我希望它有用!

原文由 Joukhar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题