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(){
  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
sakarya escort sakarya escort bayan sakarya escort serdivan escort sakarya escort sakarya escort serdivan escort
karasu escort akyazı escort serdivan escort akyazı escort ferizli escort sapanca escort serdivan escort söğütlü escort sakarya escort izmit escort arifiye escort erenler escort hendek escort kocaali escort pamukova escort taraklı escort geyve escort