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 post we will give you information about How to create a zip archive file for download in Laravel PHP. Hear we will give you detail about How to create a zip archive file for download in Laravel PHPAnd how to use it also give you demo for it if it is necessary.

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. <?php
  2.     public functionzipFileDownload(){
  3.     
  4.         $public_dir=public_path().'/uploads';
  5.         $zipFileName= CarbonCarbon::now().'.zip';
  6.         $zip=new ZipArchive;
  7. if($zip->open($public_dir.'/'.$zipFileName, ZipArchive::CREATE)=== TRUE){    
  8.             $zip->addFile('file_path','file_name');        
  9.              $zip->close();
  10.         }
  11.          $headers=array(
  12. 'Content-Type'=>'application/octet-stream',
  13. );
  14.         $filetopath=$public_dir.'/'.$zipFileName;
  15.         if(file_exists($filetopath)){
  16.             returnresponse()->download($filetopath,$zipFileName,$headers);
  17.         }
  18.         return['status'=>'file does not exist'];
  19.     }
open($public_dir . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {	
			$zip->addFile('file_path','file_name');		
		 	$zip->close();
		}
		 $headers = array(
                'Content-Type' => 'application/octet-stream',
            );
		$filetopath=$public_dir.'/'.$zipFileName;

		if(file_exists($filetopath)){
			return response()->download($filetopath,$zipFileName,$headers);
		}
		return ['status'=>'file does not exist'];

	}

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

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

You can now add multiple file and folder to zip file to download.

Hope this code and post will helped you for implement How to create a zip archive file for download in Laravel PHP. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs

For More Info See :: laravel And github

Leave a Comment

Your email address will not be published. Required fields are marked *

3  +  2  =  

We're accepting well-written guest posts and this is a great opportunity to collaborate : Contact US