Recursively Download Multiple Files As Zip File In Laravel

Hello Artisan,

In this tutorial, I will explain about how to download multiple files as a zip file using laravel. So in this laravel 8 ziparchive tutorial, you will learn how to download files recursively in laravel. 

That means, assume we have a folder there is a bunch of files. So now we will download all of those folders one by one recursively in Laravel application. So if you don't know how to do laravel create a zip file and download them recursively, then this example is for you.

To create this zip file recursively, we don't need any packages. Cause PHP provides ZipArchive to create a zip folder and download. So let's start:


Step 1: Add Route

In the first step, we have to create a route to show simple Create ZIP Button. So let's add it


Route::get('zip-download', 'App\Http\Controllers\ProductController@zipDownload')->name('zip-download');


Step 2: Create Download Zip Button

In this step, we will create a download zip button. So add this code where you want to show the download zip button.


Step 3: Create Controller

Now to create laravel zip folder and download system, we need to implement our code. We will download files recursively. So update your controller like below:

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use File;
use ZipArchive;

class ZipArchiveController extends Controller
     * Show the application dashboard.
     * @return \Illuminate\Http\Response
    public function zipDownload(Request $request)
      if($request->has('download')) {
            $zip      = new ZipArchive;
            $fileName = '';
            if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE) {
              $files = File::files(public_path('uploads/file'));
              foreach ($files as $key => $value) {
                $relativeName = basename($value);
                $zip->addFile($value, $relativeName);
            return response()->download(public_path($fileName));



Read also: How to Fix Cross Site Scripting Vulnerability in Laravel


Make sure, your all files are located in uploads/file directory. Hope it can help you.


#laravel #laravel-8x #ziparchive