簡體   English   中英

如何使用 Laravel Spatie medialibrary v9 保存上傳的圖像?

[英]How can I save uploaded image using Laravel Spatie medialibrary v9?

我正在嘗試使用 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();
}
}

預先感謝您的幫助

好吧,剛剛找到答案,我實際上非常接近。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM