When the user upload his profile pic i want to create 3 versions of this image with different sizes, then upload everything to amazon s3.
I use image intervention package for resizing images, this my code so far.
public function store(Request $request){
if($request->has('avatar')){
$avatar = $request->file('avatar');
$filename = md5(time()).'_'.$avatar->getClientOriginalName();
$normal = Image::make($avatar)->resize(160, 160);
$medium = Image::make($avatar)->resize(80, 80);
$small = Image::make($avatar)->resize(40, 40);
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatars/normal/'.$filename, fopen($normal, 'r+'), 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatars/medium/'.$filename, fopen($medium, 'r+'), 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatars/small/'.$filename, fopen($small, 'r+'), 'public');
$user = User::findorFail(Auth::user()->id);
$user->avatar = $filename;
$user->save();
return redirect()->back();
}
}
When i try to submit the file i got this error.
fopen(): Filename cannot be empty
Any help is appreciated
UPDATE i made it work like this, if someone has the same issue i hope he will find this code helpful.
public function store(Request $request){
if($request->has('avatar')){
$avatar = $request->file('avatar');
$extension = $request->file('avatar')->getClientOriginalExtension();
$filename = md5(time()).'_'.$avatar->getClientOriginalName();
$normal = Image::make($avatar)->resize(160, 160)->encode($extension);
$medium = Image::make($avatar)->resize(80, 80)->encode($extension);
$small = Image::make($avatar)->resize(40, 40)->encode($extension);
//$path = '/users/'.Auth::user()->uuid.'/avatar/normal/'.$filename;
//dd($normal);
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatar/normal/'.$filename, (string)$normal, 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatar/medium/'.$filename, (string)$medium, 'public');
Storage::disk('s3')->put('/users/'.Auth::user()->uuid.'/avatar/small/'.$filename, (string)$small, 'public');
$user = User::findorFail(Auth::user()->id);
$user->avatar = $filename;
$user->save();
return redirect()->back();
}
}