Laravel显示来自存储/应用/公共的图像

时间:2018-08-10 09:34:02

标签: php laravel-blade laravel-5.6

我正在尝试显示来自storage / app / public文件夹的图像。每当我的控制器使用以下命令从该文件夹中检索图像时

$images = Storage::files('public');

从此处检索的文件的前缀为public/,而不是storage/。 导致的问题是可以找到localhost/storage/filename.jpg的图像,但是不能找到localhost/public/filename.jpglocalhost/storage/public/filename.jpg的图像。 我可以通过手动切断公共前缀并将其替换为存储来解决此问题,但这并不是一种特别优雅的处理方式。

我已经运行了php artisan storage:link命令,然后重新运行它会产生一条The "public/storage" directory already exists.消息。

1 个答案:

答案 0 :(得分:1)

Laravel在存储配置中随附内置public磁盘。

要列出storage/app/public文件夹中的所有文件,不带前缀,请使用:

\Storage::disk('public')->files();

要获取storage/app/public文件夹中文件的正确URL,请使用:

\Storage::disk('public')->url($file);

要返回storage/app/public文件夹中的文件的URL数组,下面是一个示例组合:

array_map(function ($f) {
    return \Storage::disk('public')->url($f);
}, \Storage::disk('public')->files());