4 回答
TA贡献1820条经验 获得超2个赞
将“FILESYSTEM_DRIVER=public”更改为
FILESYSTEM_DISK=public
或者完全删除该行并直接在 filesystems.php 中将 public 文件夹设置为默认磁盘,如下所示:
'default' => env('FILESYSTEM_DISK', 'public'),
TA贡献1805条经验 获得超9个赞
这看起来更像是配置缓存问题,因为您的文件系统看起来配置正确。
文件storage/app夹是laravel默认磁盘(磁盘)的路径local。由于您已指定使用 public 作为 .env 中的默认磁盘,但您的应用程序仍在使用本地磁盘路径,因此看起来像是缓存问题
尝试使用
php artisan config:clear
然后尝试
request('avatar')->store('avatars');
如果确实是缓存问题,那么文件应该存储在storage/app/public文件夹中。
要获取图像的完整路径,请使用
Storage::url('avatar/'.$user->avatar);
所以在访问器中,使用
public function getAvatarAttribute($value)
{
return Storage::url('avatar/'.$value);
}
不推荐使用asset()获取文件路径,因为如果有一天您希望将存储切换到云(S3 或任何其他存储。基本上,您不想使用应用程序的存储文件夹),那么将asset()不会不再给你正确的路径,你需要在任何地方改变它。但是当使用存储门面时,您需要做的就是在 filesystems.php 中更改它
另外,为了自己测试一下,你也可以通过将磁盘指定为存储方法的第二个参数来指定存储时的磁盘
request('avatar')->store('avatars', 'public');
Storage::disk('public')->url('avatar/'.$user->avatar);
TA贡献2080条经验 获得超4个赞
另外,不要忘记删除public/storage
文件夹
然后重新运行
php artisan config:clear
这个很重要
php artisan storage:link
TA贡献1830条经验 获得超9个赞
另外,不要忘记删除public/storage
文件夹
然后重新运行
php artisan config:clear
这个很重要
php artisan storage:link
- 4 回答
- 0 关注
- 166 浏览
添加回答
举报