How to Delete Files from Public Folder and Storage Folder in Laravel?

In this article, we will focus on the process of deleting files from the public and storage folders in Laravel. Understanding this is essential for developers working with Laravel applications. We will delve into two methods to remove files from folders: using File Facade and Storage Facade. By the end of this article, you will have a clear understanding of how to check if a file exists and how to delete it if needed.

Laravel provides a clean and elegant syntax that allows developers to remove files from public and storage folders easily. In some cases, you might need to delete files from these folders, such as when you want to remove outdated or unnecessary files from your application.

In this tutorial, we will provide examples that demonstrate how to delete files using File Facade and Storage Facade in Laravel applications.

Reasons to Delete Files in Laravel

There are various reasons why you might need to delete files from your Laravel application. Some of the common reasons include:

  1. Updating or replacing files
  2. Removing outdated files
    File::delete(file_path);
  3. Clearing storage space

Method 1: Removing Files from Public Folder using File Facade

 

Syntax

File::delete(file_path);

Example

In this example, we have a folder named “images” containing a file named “sample.png” in the public folder. We will first check if the file exists, and if it does, we will delete it.

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use File;
  
class FileController extends Controller
{
    public function removeImage(Request $request)
    {
        if(File::exists(public_path('images/sample.png'))){
            File::delete(public_path('images/sample.png'));
        }else{
            dd('File does not exist.');
        }
    }
}

Method 2: Removing Files from Storage Folder using Storage Facade

Syntax

Storage::delete(file_path);

Example

Here we have a folder named “images” containing a file named “sample.png” in the storage folder. We will first check if the file exists, and if it does, we will delete it.

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use Storage;
  
class FileController extends Controller
{
    public function deleteImage(Request $request)
    {
        if(Storage::exists('images/sample.png')){
            Storage::delete('images/sample.png');
            // To delete multiple files
            // Storage::delete(['images/sample.png', 'images/sample2.png']);
        }else{
            dd('File does not exist.');
        }
    }
}

 

Conclusion

In this article, we have demonstrated how to delete files from public and storage folders in Laravel applications. We have covered two methods: using File Facade and Storage Facade. These examples will help you understand how to manage files in your Laravel application effectively.

Common Queries with solutions:

 

Can I delete multiple files at once using Storage Facade?

Yes, you can delete multiple files at once using Storage Facade by passing an array of file paths to the delete() method, like this:

Storage::delete(['images/sample.png', 'images/sample2.png']);

 

What if I want to remove a directory instead of a single file?

To remove a directory, you can use the deleteDirectory() method provided by both the File and Storage facades. For example:

Storage::deleteDirectory('images/old-images');

 

How can I check if a file exists before deleting it?

You can use the exists() method from the File and Storage facades to check if a file exists. For example:

File::exists(public_path('images/sample.png'));

 

Can I use these methods to delete files from private storage folders in Laravel?

Yes, you can use the same methods to delete files from private storage folders as well. The only difference is in specifying the file path. For example, to delete a file from a private storage folder, you can use the storage_path() helper function instead of public_path().

 

Is there a way to move a file instead of deleting it?

Yes, you can move a file from one folder to another using the move() method provided by both the File and Storage facades. For example:

Storage::move(‘images/sample.png’, ‘images/new-folder/sample.png’);

Leave a Comment

Your email address will not be published. Required fields are marked *