【发布时间】:2020-01-16 17:35:27
【问题描述】:
我已经在本地机器上使用 Laravel 6.0.3 版设置了一个站点。
我运行了这个命令:
php artisan storage:link
并已将图像文件“black.png”上传到我的网站。
上传效果很好,文件相对于根目录存在:
存储/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 状态响应代码。
最终编辑:
按照 ceejayoz 的指示,我做了两个重要的调整。首先在 config/filesystems.php 里面我改变了一个局部变量:
'root' => storage_path('app/public'),
在我的模板调用中我使用了:
{{ asset('storage/' . $image) }}"
现在它可以工作了。
【问题讨论】:
-
尝试先添加
storage这样storage/posts/KiL8ZKWQIq3CK8ecd4CDVZHACFHlUsMAyq8h0AJj.png -
嘿约瑟夫。谢谢您的意见。我继续尝试使用 URL,但仍然无法看到图像。有关详细信息,请参阅我编辑的问题。
-
@JackRobson,在标签中包含你正在使用的 Laravel 版本。
-
storage:link,根据the docs,创建“从public/storage到storage/app/public的符号链接”。storage/app/posts中的任何内容都无法通过链接访问。 -
我认为响应是“未找到”,但代码错误 200。无论如何,请查看@ceejayoz 评论。我认为这就是重点。