In this post, I will show you how to create very simple way to zip file in Laravel 6 application. So let’s follow few things and make it simple example.

Step 1: Create Route

First thing is we put one route in one for download created zip file. So simple add both routes in your route file.

routes/web.php

Route::get('download-zip', 'ZipController@downloadZip');

Step 2: Create Controller

Same things as above for route, here we will add one new method for route. downloadZip() will generate new zip file and download as response, so let’s add bellow:

app/Http/Controllers/ZipController.php

<?php

   

namespace App\Http\Controllers;

   

use Illuminate\Http\Request;

use File;

use ZipArchive;

  

class ZipController extends Controller

{

    /**

     * Display a listing of the resource.

     *

     * @return \Illuminate\Http\Response

     */

    public function downloadZip()

    {

        $zip = new ZipArchive;

   

        $fileName = 'myNewFile.zip';

   

        if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE)

        {

            $files = File::files(public_path('myFiles'));

   

            foreach ($files as $key => $value) {

                $relativeNameInZipFile = basename($value);

                $zip->addFile($value, $relativeNameInZipFile);

            }

             

            $zip->close();

        }

    

        return response()->download(public_path($fileName));

    }

}

Ok now you can run project and open that route like.

But make sure you have “myFiles” folder in public directory and add some pdf files on that file so it will create zip file with those files.

Now you can test it by using following command:

php artisan serve

Now you can open bellow URL on your browser:

http://localhost:8000/download-zip

I hope it can help you…

#laravel #php #web-development

How to Create Zip File and Download in Laravel 6?
44.95 GEEK