Create a Zip File and Download in Laravel 10

Introduction

In this tutorial, we will learn how to create a zip file and download it in Laravel 10. We will explore the step-by-step process with a live example. Are you ready? Let’s dive in!

Step 1: Set up a Laravel project

First, let’s create a new Laravel project by running the following command in your terminal:

composer create-project laravel/laravel example-app

Step 2: Create a route

Next, let’s create a route in the web.php file located in the routes directory. Open the file and add the following code:

Route::get('/download-zip', [DownloadController::class, 'downloadZip']);

Step 3: Create a controller

Now, let’s create a controller called DownloadController. Run the following command in your terminal:

Open the newly created DownloadController.php file in the app/Http/Controllers directory and add the following code:

use ZipArchive;

class DownloadController extends Controller
{
    public function downloadZip()
    {
        // Create a new zip archive
        $zip = new ZipArchive;
        
        // Path to the directory you want to compress
        $directory = public_path('files');
        
        // Path to the zip file you want to create
        $zipFile = public_path('downloads/files.zip');
        
        // Open the zip file for writing
        if ($zip->open($zipFile, ZipArchive::CREATE) === TRUE) {
            
            // Add all files from the directory to the zip file
            $files = File::allFiles($directory);
            
            foreach ($files as $file) {
                $zip->addFile($file->getPathname(), $file->getBasename());
            }
            
            // Close the zip file
            $zip->close();
        }
        
        // Download the zip file
        return response()->download($zipFile);
    }
}

Step 4: Create a view

php artisan make:view download
<!DOCTYPE html>
<html>
<head>
    <title>Download Zip File</title>
</head>
<body>
    <h1>Download Zip File</h1>
    
    <a href="{{ url('/download-zip') }}">Click here to download the zip file</a>
</body>
</html>

Step 5: Update the route

Route::get('/download', function () {
    return view('download');
});

Output:-

Related Posts

Ask a Doctor Online: A Simple Guide to Virtual Healthcare

In our fast-paced world, the traditional trip to a doctor’s office isn’t always the most practical first step when health concerns arise. Whether you are dealing with…

Read More

Best Free Programming Ebooks to Learn Software Development

Learning modern technology can feel overwhelming when tutorials are scattered across dozens of websites. Many software developers, engineering students, and IT professionals struggle to find comprehensive study…

Read More

FinOps Training: Understanding Cost Visibility and Optimization

Introduction Moving workloads to the cloud can simplify infrastructure management, but it can also introduce a new financial challenge. Teams can provision resources whenever they need them,…

Read More

The Architecture of Intelligent DataOps: From Ingestion to Automation

Introduction Modern organizations run on distributed data ecosystems. On any given day, an enterprise environment ingests, transforms, and serves petabytes of records sourced from transactional databases, external…

Read More

Transforming Data Reliability: How DataOps Platforms Drive Proactive Monitoring

Introduction Traditional monitoring focuses almost entirely on infrastructure availability and binary job execution states—whether a server is up or whether a task completed. However, modern distributed environments…

Read More

Navigating Pipeline Risks with Expert DevSecOps Consulting Services

Software delivery moves faster today than at any point in technological history. High-performing engineering organizations push code changes to production multiple times a day using automated deployment…

Read More
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x