Laravel不会渲染图像

时间:2019-09-15 19:07:43

标签: php laravel laravel-6

我已经在本地计算机上使用Laravel 6.0.3版建立了一个站点。

我运行了以下命令:

php artisan storage:link

并且已将图像文件“ black.png”上传到我的网站。

上传效果很好,并且文件相对于root位于以下位置:

storage / app / posts / KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png

但是当我使用资产功能时

$image = "posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png";
assets($image);

它将以下链接输出到图像:

http://cms.test/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png

没有给出404错误。当访问时是空白页。

我可能会缺少什么?

编辑:

如果我尝试使用:

{{ asset('storage/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png') }} 

然后,当我加载页面时,URL上的图像出现404错误:

 http://cms.test/storage/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png

类似地,如果我尝试:

{{ asset('storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png') }} 

我也收到URL的404错误:      http://cms.test/storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png

返回初始代码后,在网络调试窗口中响应:

$image = "posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png";
assets($image);

显示资产的200状态响应代码。

enter image description here

最终编辑:

在ceejayoz的指导下,我进行了两项重要的调整。首先在config / filesystems.php内部,我更改了一个局部变量:

'root' => storage_path('app/public'),

在我的模板调用中,我使用了:

{{ asset('storage/' . $image) }}"

现在可以使用了。

1 个答案:

答案 0 :(得分:2)

php artisan storage:link创建一个从public/storagestorage/app/public的符号链接。

这使得storage/app/publichttps://example.com/storage/中的任何内容都可用。它不会在任何地方外部 storage/app/public中提供任何内容-因此storage/app/posts中的内容在浏览器中仍然无法访问。

如果您将帖子图像放置在storage/app/public/posts中,并且您已正确设置链接,则可以通过执行asset('storage/posts/foo.jpg')来访问它们。