首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Laravel Spatie媒体库v9保存上传的图像?

如何使用Laravel Spatie媒体库v9保存上传的图像?
EN

Stack Overflow用户
提问于 2020-11-16 03:17:59
回答 1查看 426关注 0票数 0

我尝试使用Spatie的媒体库(v9)保存我上传的文件,但不知何故我无法将图像保存在我的媒体表和存储文件夹中。当我dd()请求它找到它需要的文件和所有信息时,我遗漏了什么?

下面是我的控制器存储方法:

代码语言:javascript
复制
 public function store(Request $request, User $user) {

    
    $validationToken = Str::random(32);

    $user->create([
        'name' => $request->name,
        'email' => $request->email,
        'description' => $request->description,
        'validation_token' => $validationToken
    ]);

    if($request->file('avatar')) {
        // persists the uploaded file into the media table
        $user->addMediaFromRequest('avatar')->toMediaCollection('avatars');

        // fills the avatar column in user table with image path
        $user->update(['avatar' => $request->file('avatar')]);
    }

    session()->flash('message', 'L`utilisateur a bien été créé');
    return redirect()->back();
}

}

和我的模型

代码语言:javascript
复制
class User extends Authenticatable implements HasMedia
{
use Notifiable, InteractsWithMedia;


public function registerMediaConversions(Media $media = null): void
{
    $this->addMediaConversion('thumb')
        ->width(368)
        ->height(232)
        ->sharpen(10);
}

// allows to delete previous avatars when new one is submitted with singleFile() method
public function registerMediaCollections(): void
{
    $this
        ->addMediaCollection('avatars')
        ->singleFile();
}
}

预先感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2020-11-16 03:53:29

好吧,我刚刚找到了答案,其实我已经很接近了。

addMediaFromRequest()方法必须在$user->create()上调用,而不是在模型本身上调用。

代码语言:javascript
复制
public function store(Request $request, User $user) {


    $validationToken = Str::random(32);

    $createUser = $user->create([
        'name' => $request->name,
        'email' => $request->email,
        'description' => $request->description,
        'validation_token' => $validationToken
    ]);

    if($request->file('avatar')) {
        $createUser->addMediaFromRequest('avatar')->toMediaCollection('avatars');
        $createUser->update(['avatar' => $request->file('avatar')]);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64848776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档