我已经在本地计算机上使用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状态响应代码。
最终编辑:
在ceejayoz的指导下,我进行了两项重要的调整。首先在config / filesystems.php内部,我更改了一个局部变量:
'root' => storage_path('app/public'),
在我的模板调用中,我使用了:
{{ asset('storage/' . $image) }}"
现在可以使用了。
答案 0 :(得分:2)
php artisan storage:link
创建一个从public/storage
到storage/app/public
的符号链接。
这使得storage/app/public
中https://example.com/storage/
中的任何内容都可用。它不会在任何地方外部 storage/app/public
中提供任何内容-因此storage/app/posts
中的内容在浏览器中仍然无法访问。
如果您将帖子图像放置在storage/app/public/posts
中,并且您已正确设置链接,则可以通过执行asset('storage/posts/foo.jpg')
来访问它们。