Soo's avatar
Level 2

Update upload image

Hello friends, I have a form edit contain an upload file. After the update the image don't showing.Any help this is the code controller:

public function edit($id)
      {
        $jobOffer = JobOffer::where('id', $id)->first();
        return view('jobOffer.edit' , compact('jobOffer'));
      }

      public function update($id) 
      {
         
         request()->validate([
            'name' => 'required|string|max:40',
            'description' => 'required',
            'job_photo_path' => 'required'
         ]);

         $jobOffers = JobOffer::where('id',$id)->update([
            'name' => request('name'),
            'description' => request('description'),
            'job_photo_path' => request('job_photo_path'),
         ]);

         return redirect('/jobOffer')->with('success', 'Your Job Offer has been update successfully!');
      }
0 likes
4 replies
SilenceBringer's avatar

@soo you get file from request, but do not store it. So, this

'job_photo_path' => request('job_photo_path'),

you'll end up with the null or empty string

You asked about storing files yesterday. Use the same logic here

1 like
kkhicher1's avatar
Level 2

Hi @soo , Welcome Again,

You can Edit Your code for uploading file ---


public function edit($id)
      {
        $jobOffer = JobOffer::where('id', $id)->first();
        return view('jobOffer.edit' , compact('jobOffer'));
      }

      public function update($id) 
      {
         
         request()->validate([
            'name' => 'required|string|max:40',
            'description' => 'required',
            'job_photo_path' => 'required|image' #supported files are (jpg, jpeg, png, bmp, gif, svg, or webp)
         ]);

         # code for uploading file
         $fileName = time() . '.' . $request->job_photo_path->extension();
         $request->job_photo_path->move(public_path('job-photos'), $fileName);
         $url = asset('/job-photos/' . $fileName); #this provide full path with image name

         $jobOffers = JobOffer::where('id',$id)->update([
            'name' => request('name'),
            'description' => request('description'),
            'job_photo_path' => $url,
         ]);

         return redirect('/jobOffer')->with('success', 'Your Job Offer has been update successfully!');
      }

Most important that you add enctype="multipart/form-data" in your form element.

Hope its help you. Thank you

1 like
anilkumarthakur60's avatar

in your store method

  $image = $request->form_image_name->store('foldername', 'public');
Model_name::create(['image'=>$image]);

in your update method

   $jobOffers = JobOffer::first($id);
$data=$request->only(['name','description]);
 if ($request->hasFile('form_image_name')) {
            $oldimage = $jobOffers ->field_image_name;
            Storage::disk('public')->delete($oldimage);

            $image = $request->form_image_name->store('doctor', 'public');
            $data['image'] = $image;
        }
        $jobOffers ->update($data);
1 like

Please or to participate in this conversation.