1

我在本地机器上使用 Laravel 6.0.3 版设置了一个站点。

我运行了这个命令:

php artisan storage:link

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

上传效果很好,文件相对于 root 存在于:

存储/应用/帖子/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) }}"

现在它可以工作了。

4

1 回答 1

2

php artisan storage:link创建一个从public/storageto的符号链接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')

于 2019-09-15T19:49:47.010 回答