图像不会保存在公共文件夹 laravel 中

我正在学习 laravel 但我现在对图像有问题,我希望它保存在 storage/app/public/avatar 中以便我可以显示它,但它一直保存在 storage/app/avatar 中


我在 .env 中写这个


FILESYSTEM_DRIVER=public

然后我生成存储链接


php artisan storage:link 

但还是一样,每次我上传照片时都会将其保存在 storage/app/avatar


任何人都可以帮助我吗?


在 filesystems.php 中


'public' => [

        'driver' => 'local',

        'root' => storage_path('app/public'),

        'url' => env('APP_URL').'/storage',

        'visibility' => 'public',

    ],

这里 :


 $attributes['avatar'] = request('avatar')->store('public/avatars');

在用户.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());

在 show.blade 中


 <img

            src= "{{ $user->avatar }}"

            alt=""

            class="rounded-full mr-4 absolute"

            style="width: 150px; left: calc(50% - 75px); top: 300px"

        >

但 src 变为“(未知)”


ABOUTYOU
浏览 118回答 4
4回答

DIEA

将“FILESYSTEM_DRIVER=public”更改为FILESYSTEM_DISK=public或者完全删除该行并直接在 filesystems.php 中将 public 文件夹设置为默认磁盘,如下所示:'default'&nbsp;=>&nbsp;env('FILESYSTEM_DISK',&nbsp;'public'),

Cats萌萌

这看起来更像是配置缓存问题,因为您的文件系统看起来配置正确。文件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){&nbsp; &nbsp; return Storage::url('avatar/'.$value);}不推荐使用asset()获取文件路径,因为如果有一天您希望将存储切换到云(S3 或任何其他存储。基本上,您不想使用应用程序的存储文件夹),那么将asset()不会不再给你正确的路径,你需要在任何地方改变它。但是当使用存储门面时,您需要做的就是在 filesystems.php 中更改它另外,为了自己测试一下,你也可以通过将磁盘指定为存储方法的第二个参数来指定存储时的磁盘request('avatar')->store('avatars', 'public');Storage::disk('public')->url('avatar/'.$user->avatar);

犯罪嫌疑人X

另外,不要忘记删除public/storage文件夹然后重新运行php&nbsp;artisan&nbsp;config:clear这个很重要php&nbsp;artisan&nbsp;storage:link

慕标琳琳

另外,不要忘记删除public/storage文件夹然后重新运行php&nbsp;artisan&nbsp;config:clear这个很重要php&nbsp;artisan&nbsp;storage:link
打开App,查看更多内容
随时随地看视频慕课网APP