How to create a zip archive file for download in Laravel PHP

How to create a zip archive file for download in Laravel PHP

In this tutorial, i will tell you how to create zip file for download in Laravel 5 and how to add multiple files to zip archive file.

With ZipArchive class, you can create zip file with multiple files.

You have to define directory first where zip file will be created with the name.

Now create a zip file by using ZipArchive::CREATE and then open this zip file by using $zip->open() method.

If $zip->open() return true then we will add file to zip file, To add any file you need file path and file name. File will be created within zip file with given file name. File name will override the original file name by supplied file name in $zip->addFile() method.

At the end don't forget to close zip file, you can close zip file by using $zip->close() method.

If you want to force download then set header correclty.

response()->download() method in Laravel is used to download the file from given path.

First argument of this method accepts the file path, second argument accepts file name and finally in third argument you can pass HTTP headers as well.

  1.     public function zipFileDownload(){
  2.     
  3.         $public_dir=public_path().'/uploads';
  4.         $zipFileName = Carbon\Carbon::now().'.zip';
  5.         $zip = new ZipArchive;
  6. if ($zip->open($public_dir . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {    
  7.             $zip->addFile('file_path','file_name');        
  8.              $zip->close();
  9.         }
  10.          $headers = array(
  11. 'Content-Type' => 'application/octet-stream',
  12. );
  13.         $filetopath=$public_dir.'/'.$zipFileName;
  14.         if(file_exists($filetopath)){
  15.             return response()->download($filetopath,$zipFileName,$headers);
  16.         }
  17.         return ['status'=>'file does not exist'];
  18.     }

In above example i add one file to zip archive, you can add more files in loop.

  1. //add the files
  2. foreach($files as $file) {
  3. $zip->addFile($file->file_path,$file->file_name);
  4. }

Phone: (+91) 8800417876
Noida, 201301
Attention Required! | Cloudflare

Sorry, you have been blocked

You are unable to access ressim.net

Why have I been blocked?

This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.

What can I do to resolve this?

You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.