Laravel 不渲染图像

Laravel Doesn't Render Images

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

我运行这个命令:

php artisan storage:link

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

上传正常,文件相对根目录存在于:

storage/app/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png

但是当我使用资产功能时

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

它向图像输出以下内容link:

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

返回初始代码后网络调试window中的响应:

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

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

最终编辑:

按照 ceejayoz 的指示,我进行了两项重要的调整。首先在 config/filesystems.php 里面我改变了一个局部变量:

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

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

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

现在可以使用了。

php artisan storage:linkpublic/storagestorage/app/public 创建一个符号 link。

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

如果您将 post 图片放在 storage/app/public/posts 中,如果 link 设置正确,则可以通过 asset('storage/posts/foo.jpg') 访问它们。