我正在尝试显示来自storage / app / public文件夹的图像。每当我的控制器使用以下命令从该文件夹中检索图像时
$images = Storage::files('public');
从此处检索的文件的前缀为public/
,而不是storage/
。
导致的问题是可以找到localhost/storage/filename.jpg
的图像,但是不能找到localhost/public/filename.jpg
或localhost/storage/public/filename.jpg
的图像。
我可以通过手动切断公共前缀并将其替换为存储来解决此问题,但这并不是一种特别优雅的处理方式。
我已经运行了php artisan storage:link命令,然后重新运行它会产生一条The "public/storage" directory already exists.
消息。
答案 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());