I am working with PHP Laravel 8. I am doing avatar upload to the database and uploading it to public/assets. It's working with database but it doesn't upload it I want some help Thank You
This is HTML code for uploading
<div >
<label for="exampleInputFile">Profile Image</label>
<div >
<div >
<input type="file" name="profile_image" id="profile-image">
<label for="exampleInputFile">Recommended Profile Image (160w x 160h)</label>
</div>
</div>
<span >Picture size should be less than 4MB</span>
</div>
and here is the controller code
public function update(Request $request)
{
$user = Auth::user();
// $user->full_name=$request->input('full_name');
//$user->email=$request->input('email');
$user->avatar=$request->input('profile_image');
if($request->hasFile('profile_image'))
{
$avatar = $request->file('profile_image');
$filename = time().'.'.$avatar->getClientOriginalExtension();
$location = url('public/assets/uploads/images/'.$filename);
Image::make($avatar)->resize(300, 300)->save($location);
$user = Auth::user();
$user->avatar = $filename;
}
auth()->user()->save();
$user->save();
return redirect()->back()->with('success','Sucessfully changed User Information');
}
CodePudding user response:
To store the image, you can simply do :
if ($request->hasFile('profile_image')) {
$avatar = $request->file('profile_image');
$filename = now()->timestamp . '.' . $avatar->getClientOriginalExtension();
$image->move(public_path('assets/uploads/images/'), $filename);
// the rest of your code
}
To modify the image's size and store it, you can follow the Laravel 8 Image Resize & Upload with Intervention Image article.
CodePudding user response:
Just change
$location = url('public/assets/uploads/images/'.$filename);
with
$location = public_path('assets/uploads/images/'.$filename);
final
public function update(Request $request)
{
$user = Auth::user();
// $user->full_name=$request->input('full_name');
//$user->email=$request->input('email');
$user->avatar=$request->input('profile_image');
if($request->hasFile('profile_image'))
{
$avatar = $request->file('profile_image');
$filename = time().'.'.$avatar->getClientOriginalExtension();
$location = public_path('public/assets/uploads/images/'.$filename);
Image::make($avatar)->resize(300, 300)->save($location);
$user = Auth::user();
$user->avatar = $filename;
}
auth()->user()->save();
$user->save();
return redirect()->back()->with('success','Sucessfully changed User Information');
}
