In this article, we are going to tell you how to create zip file and download using ZipArchive with example in PHP.
Here, we create a Zip file using the ZipArchive class in this example. sometimes, we need to compress a zip file for send emails like multiple invoices. so we can easily create zip file and download using the below example.
so you can follow the below example for create a zip file example using ziparchive php class.
index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!DOCTYPE html> <html lang="en"> <head> <title>Create Zip File And Download Using ZipArchive In Php - XpertPhp</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="col-sm-12"> <h3>Create Zip File And Download Using ZipArchive</h3> <a href="download.php" class="btn btn-info" >Download ZIP</a> </div> </div> </div> </body> </html> |
download.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?php function createZipArchive($files = array(), $destination = '', $overwrite = false) { if(file_exists($destination) && !$overwrite) { return false; } $validFiles = array(); if(is_array($files)) { foreach($files as $file) { if(file_exists($file)) { $validFiles[] = $file; } } } if(count($validFiles)) { $zip = new ZipArchive(); if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) == true) { foreach($validFiles as $file) { $zip->addFile($file,$file); } $zip->close(); return file_exists($destination); }else{ return false; } }else{ return false; } } $fileName = 'invoicezipfile.zip'; $files = array('uploads/Invoice1.pdf', 'uploads/Invoice2.pdf'); $result = createZipArchive($files, $fileName); header("Content-Disposition: attachment; filename=\"".$fileName."\""); header("Content-Length: ".filesize($fileName)); readfile($fileName); ?> |
We think would you like this article, so you can click on “Show Demo” button and you can see this demo article.