我尝试使用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();
}
}预先感谢您的帮助
发布于 2020-11-16 03:53:29
好吧,我刚刚找到了答案,其实我已经很接近了。
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')]);
}
}https://stackoverflow.com/questions/64848776
复制相似问题