Laravel 9 Check if File Exists in Public Folder
Sometimes when you are working with Laravel 9 and you want to delete a post that has an image, you must remove the file too, thus the uploads folder is not full of unused images, but what if the file is just a URL linking to a website like pixabay you will get an error that the file does not exists, so how to check for the file if exists before deleting the post?
Check before delete
Let's assume that we want to delete a post with an image, all we need to do is to use the File class that provides the static method exists, the method takes the path as a parameter and checks if the file exists then the file is deleted if not we delete only the post.
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
class PostController extends Controller
{
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function destroy(Post $post)
{
//
if(File::exists($post->photo)){
File::delete($post->photo);
}
$post->delete();
return redirect()->route('posts.index')->with([
'success' => 'Post deleted successfully'
]);
}
}