【问题标题】:How can I save uploaded image using Laravel Spatie medialibrary v9?如何使用 Laravel Spatie medialibrary v9 保存上传的图像?
【发布时间】:2020-11-15 19:17:59
【问题描述】:

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

这是我的控制器存储方法:

 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();
}

}

还有我的模特

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();
}
}

提前感谢您的帮助

【问题讨论】:

  • $user->update(['avatar' => $request->file('avatar')]); 这部分有效吗? $request->file('avatar') 返回什么?
  • 它没有用,但是我刚刚发现有问题,我正在上传答案!

标签: php laravel laravel-medialibrary


【解决方案1】:

嗯,刚刚找到答案,其实我真的很接近了。

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

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')]);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多