PHP provides
Programmatically Zip creation mainly requires when preparing the group of file and folders for downloading.
In the demonstration, I am creating a function that will read all files and folders from the specified directory and add them in the ZipArchive class object.
Completed Code
Create Zip
Create
Download Zip
Check if zip file exists or not. If it exists then download and remove it from the server.
Completed Code
If you found this tutorial helpful then don't forget to share.
ZipArchive
Class which allows us to create a Zip file. This class makes the file creation little easier.In the demonstration, I am creating a function that will read all files and folders from the specified directory and add them in the ZipArchive class object.
1. HTML
Creating a<form>
which have two button elements, one for Create Zip and another for Download.Completed Code
<div class='container'> <h1>Create and Download Zip file using PHP</h1> <form method='post' action=''> <input type='submit' name='create' value='Create Zip' /> <input type='submit' name='download' value='Download' /> </form> </div>
2. PHP
I have createdincludes
folder within the project where I stored some files and folders.Create Zip
Create
ZipArchive
Class object for Zip file creation. Define a function createZip()
to read files and directory from the specified directory path.
If file
If the reading value is the file then add it to zip object using
addFile()
method.
If directory
If the value is directory then create an empty directory and call
createZip()
function where pass the directory path.Download Zip
Check if zip file exists or not. If it exists then download and remove it from the server.
Completed Code
<?php // Create ZIP file if(isset($_POST['create'])){ $zip = new ZipArchive(); $filename = "./myzipfile.zip"; if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) { exit("cannot open <$filename>\n"); } $dir = 'includes/'; // Create zip createZip($zip,$dir); $zip->close(); } // Create zip function createZip($zip,$dir){ if (is_dir($dir)){ if ($dh = opendir($dir)){ while (($file = readdir($dh)) !== false){ // If file if (is_file($dir.$file)) { if($file != '' && $file != '.' && $file != '..'){ $zip->addFile($dir.$file); } }else{ // If directory if(is_dir($dir.$file) ){ if($file != '' && $file != '.' && $file != '..'){ // Add empty directory $zip->addEmptyDir($dir.$file); $folder = $dir.$file.'/'; // Read data of the folder createZip($zip,$folder); } } } } closedir($dh); } } } // Download Created Zip file if(isset($_POST['download'])){ $filename = "myzipfile.zip"; if (file_exists($filename)) { header('Content-Type: application/zip'); header('Content-Disposition: attachment; filename="'.basename($filename).'"'); header('Content-Length: ' . filesize($filename)); flush(); readfile($filename); // delete file unlink($filename); } } ?>
3. CSS
.container{ margin: 0 auto; width: 50%; text-align: center; } input[type=submit]{ border: 0px; padding: 7px 15px; font-size: 16px; background-color: #00a1a1; color: white; font-weight: bold; }
4. Conclusion
The above-defined functioncreateZip()
accepts the path of the directory as a parameter. It will read all files and folders from the path and add in the zip file.If you found this tutorial helpful then don't forget to share.
0 Comments:
Post a Comment