RESOLVED Laravel 8 Update image and delete old image

Viewed 193

I need help with a little thing. I have a product table with an image: Here is my function store which works perfectly

  $fileName = null;
    if (request()->hasFile('image')) {
        $image = request()->file('image');
        $fileName = md5($image->getClientOriginalName() . time()) . "." . $image->getClientOriginalExtension();
        $image->move('./img/', $fileName);
    }

   Product::create([
       'title' => $request->input('title'),
       'subtitle' => $request->input('subtitle'),
       'description' => $request->input('description'),
       'price' => $request->input('price'),
        'image' => $fileName,

    ]);

I am trying to modify the image in update but I do not know how to do it and I am in difficulty currently Here is my update function where the image is missing to modify it and delete the old one

public function update(Request $request, Product $product)
{


    $product->title = $request->input('title');
    $product->subtitle = $request->input('subtitle');
    $product->description = $request->input('description');
    $product->price = $request->input('price');

    $product->save();

Thanks

2 Answers

You can modify your update function like this

public function update(Request $request, Product $product)
{
$fileName = null;
$currentImage = $product->image;

if (request()->hasFile('image')) {
    $image = request()->file('image');
    $fileName = md5($image->getClientOriginalName() . time()) . "." . $image->getClientOriginalExtension();
    $image->move('./img/', $fileName);
}
else 
$fileName = $currentImage

if($fileName && $currentImage)
{
  // Delete the old file i.e $fileName
}


$product->title = $request->input('title');
$product->subtitle = $request->input('subtitle');
$product->description = $request->input('description');
$product->price = $request->input('price');
$product->image = $fileName;

$product->save();
}

It's good with this :

        $fileName = null;
    $currentImage = $product->image;

    if (request()->hasFile('image')) {
        $image = request()->file('image');
        $fileName = md5($image->getClientOriginalName() . time()) . "." . $image->getClientOriginalExtension();
        $image->move('./img/', $fileName);
    }
    else
        $fileName = $currentImage;

if($fileName && $currentImage)
{
    Storage::delete('./img/' . $currentImage);
}

Thanks

Related