create zip file and download using ZipArchive in php
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.
Please follow and like us: