How to Delete Images from Public/Images Folder in

2020-07-18 06:45发布

问题:

how to delete images file from public/images folder in laravel 5 ??

i found some example from this site, but i know they are just using the file name in their record table, but i'm using something like URL e.g localhost/project/uploads/filename.jpg on my record table. so if i tried like this :

    $image_path = $data->image;  // the value is : localhost/project/image/filename.format
    if(File::exists($image_path)) {
        File::delete($image_path);
    }

the file is not deleted

help pls, thanks

回答1:

If you want to delete image from your server, you have to reference location of file in directory server, means you could not reference by url link to delete it.

Commonly, Laravel 5 file is locate in public folder.

Example: your files are located in public/images

$image_path = "/images/filename.ext";  // Value is not URL but directory file path
if(File::exists($image_path)) {
    File::delete($image_path);
}

If I can delete image from server by reference URL then Google is the first target :)



回答2:

You can use the normal PHP delete file keyword ( @unlink )

$image_path = "the name of your image path here/".$request->Image; 

 if (file_exists($image_path)) {

       @unlink($image_path);

   }


回答3:

call this function and pass two parameter $filepath = path where your file exist $filename = name of your file

public static function UnlinkImage($filepath,$fileName)
{
    $old_image = $filepath.$fileName;
    if (file_exists($old_image)) {
       @unlink($old_image);
    }
}


回答4:

I had the same problem today but now the files are deleting by this code

 $image_path = $data->image;  
    if(file_exists($image_path)) {
        File::delete($image_path);
    }

basically the poblem for me was the if condition didn't returned somthing true. and the statement didnt executed.

btw I'm storing my file in public folder in laravel

hope this helps someone.



回答5:

public function destroy($id)
    {   

        $imagePath = YourModelName::select('image')->where('id', $id)->first();

         $filePath = $imagePath->image;

                   if (file_exists($filePath)) {

                   unlink($filePath);

           YourModelName::where('id', $id)->delete();

        }else{

         YourModelName::where('id', $id)->delete();
        }


    }