Creating a zip file in php is as easy as creating them on your desktop using some zipping software. Php comes with inbuilt class that helps in making a zip file and provides all the functionality that you would ever need. Here is a simple function that I coded for my project. Hope it helps some peoples out there as well.
Php code:
// creates a compressed zip file function create_zip($files = array(), $filename=array(), $destination = '',$overwrite = false) { //if the zip file already exists and overwrite is false, return false if(file_exists($destination) && !$overwrite) { return false; } //vars $valid_files = array(); $valid_names = array(); $i=0; //if files were passed in... if(is_array($files)) { //cycle through each file foreach($files as $file) { //make sure the file exists if(is_file($file)) { $valid_files[] = $file; if(isset($filename[$i]) && $filename[$i]!='') { $valid_names[]=$filename[$i]; } else { $valid_names[]=$file; } } $i++; } } //if we have good files... if(count($valid_files)) { //create the archive $zip = new ZipArchive(); if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { return false; } $i=0; //add the files foreach($valid_files as $file) { $zip->addFile($file,$valid_names[$i]); $i++; } //debug //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status; //close the zip -- done! $zip->close(); //check to make sure the file exists return file_exists($destination); } else { return false; } }
Usage demo:
$files_to_zip = array( 'preload-images/1.jpg', 'preload-images/2.jpg', 'preload-images/5.jpg', 'kwicks/ringo.gif', 'rod.jpg', 'reddit.gif' ); $filenames_in_zip = array( 'preload-images/1.jpg', 'images/2.jpg', 'preload-images95.jpg', 'ringo.gif', 'rod/rod.jpg', 'reddit/12/reddit.gif' ); //if true, good; if false, zip creation failed $result = create_zip($files_to_zip, $filenames_in_zip, 'down/my-archive.zip');
The function accepts an array of files, their respective names, the name of the destination zip folder to be saved at and a file overwriting condition.
Good luck!!!
Latest posts by Abhishek Gupta (see all)
- PHP syntactic sugar code example - September 5, 2021
- Python convert random string date format to Datetime - July 12, 2021
- Laravel Custom Exception Handlers - March 28, 2019