我正在学习laravel,但我现在的图像有问题,我希望它保存在存储/应用程序/公共/头像,所以我可以显示它,但它一直保存在存储/应用程序/头像
我在.env中写这个
FILESYSTEM_DRIVER=public
然后我生成存储链接
php artisan storage:link
但还是一样,每次我上传一张照片,它保存在存储/应用程序/头像
有人能帮我吗?
在filesystems.php
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
这里:
$attributes['avatar'] = request('avatar')->store('public/avatars');
在USer.php中
public function getAvatarAttribute($value)
{
return asset($value);
}
这个方法是正确的工作时,我正在使用一个随机头像链接,但现在它显示什么都没有,我检查我的数据库和链接在那里,它的权利
public function getAvatarAttribute($value)
{
asset('storage/avatars/'.$image->name);
}
$attributes['avatar'] = request('avatar')->store('public/avatars');
在控制器中,更新方法:
$user->update($attributes);
$user->password = Hash::make($user['password']);
$user->save();
return redirect($user->path());
在演出中blade
<img
src= "{{ $user->avatar }}"
alt=""
class="rounded-full mr-4 absolute"
style="width: 150px; left: calc(50% - 75px); top: 300px"
>
但src变为“(未知)”
5条答案
按热度按时间1hdlvixo1#
将“FILESYSTEM_DRIVER=public”更改为
或者完全删除该行,直接在filesystems.php中将public folder设置为默认磁盘,如下所示:
5t7ly7z52#
这看起来更像是一个配置缓存问题,因为您的文件系统看起来配置正确。
storage/app
文件夹是laravel默认磁盘(local
磁盘)的路径。由于您已指定使用public作为.env中的默认磁盘,但您的应用程序仍在使用本地磁盘路径,因此这看起来像是缓存问题尝试使用
并且然后尝试
如果确实是缓存问题,那么文件应该存储在
storage/app/public
文件夹中。若要获取图像的完整路径,请使用
因此在访问器中,使用
不建议使用
asset()
获取文件的路径,因为如果有一天您希望将存储切换到云(S3或任何其他存储)。基本上,你不想使用你的应用程序的存储文件夹),那么asset()
将不再给予你正确的路径,你需要改变它的所有地方。但是当使用存储外观时,您所需要做的就是在filesystems.php中更改它。另外,为了自己测试一下,还可以在存储时指定磁盘,方法是将磁盘指定为store方法的第二个参数
idv4meu83#
另外,不要忘记删除
public/storage
文件夹然后重新运行
这很重要
oewdyzsn4#
如果有人还在寻找答案。解决方法如下:
8wtpewkr5#
store方法将文件存储在storage/app目录下。这就是为什么您的代码将图像存储在storage/app/avatars中
这将把它放在storage/app/public/avatars下
表现出来