我想在更新新图像时删除存储的图像

问题描述 投票:0回答:2

我想在更新新图像时删除存储的图像

public function update($id)
    {
        $users = AdminLogin::find($id);

        if(Input::hasFile('image_file'))
        {
            $file = Input::file('image_file');
            $name = time() . '-' . $file->getClientOriginalName();
            $file = $file->move(('uploads/images'), $name);
            $users->image_file= $name;
        }
        $users->save();
        return response()->json($users);
    }
laravel lumen
2个回答
4
投票

你可以写这个。这将解决您的问题

public function update($id)
{
    $users = AdminLogin::find($id);

    if(Input::hasFile('image_file'))
    {
        $usersImage = public_path("uploads/images/{$users->image_file}"); // get previous image from folder
        if (File::exists($usersImage)) { // unlink or remove previous image from folder
            unlink($usersImage);
        }
        $file = Input::file('image_file');
        $name = time() . '-' . $file->getClientOriginalName();
        $file = $file->move(('uploads/images'), $name);
        $users->image_file= $name;
    }
    $users->save();
    return response()->json($users);
}

这将删除先前的图像并更新新图像


0
投票

嗯,答案在技术上是不正确的。如果保存操作失败怎么办,因为您删除了该图像,当前记录将不再具有图像。因此,要解决此问题,您可以调整代码,如:

    if(Input::hasFile('image_file'))
        {

            $file = Input::file('image_file');
            $name = time() . '-' . $file->getClientOriginalName();
            $file = $file->move(('uploads/images'), $name);
            $users->image_file= $name;
        }
        $users->save();
        if(Input::hasFile('image_file'))
           {
               $usersImage = public_path("uploads/images/{$users->image_file}"); // get previous image from folder
               if (File::exists($usersImage)) { // unlink or remove previous image from folder
                  unlink($usersImage);
               }
           }
© www.soinside.com 2019 - 2024. All rights reserved.