How to Zip and Unzip Files in PHP?
How to Zip and Unzip Files in PHP?
You can easily zip and unzip big files using PHP script. There is a very nice and simple class in PHP which provides Zip and Unzip utility. Using this class, you can zip and unzip files in one go without any hassles.
First of all, before we zip the file using PHP script, will check whether that file already exists or not? If file already exists, then we have to make sure whether to overwrite that zip file or not? Then we will use PHP ZipArchive class to zip the files. We are providing destination parameter to the create_zip function which will contain the full path and name of the final zip file. Overwrite parameter in this function just tells whether to overwrite the existing zip file or not?
Similarly, we can unzip files using PHP ZipArchive class.
How to zip files using PHP script?
/* creates a compressed zip file */
function create_zip($files = 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();
//if files were passed in...
if(is_array($files)) {
//cycle through each file
foreach($files as $file) {
//make sure the file exists
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}
//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;
}
//add the files
foreach($valid_files as $file) {
$zip->addFile($file,$file);
}
//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;
}
}
/***** Example Usage ***/
$files=array('file1.jpg', 'file2.jpg', 'file3.gif');
create_zip($files, 'myzipfile.zip', true);
create_zip($files, 'myzipfile.zip', true);
How to unzip files using PHP script?
function unzip_file($file, $destination){
// create object
$zip = new ZipArchive() ;
// open archive
if ($zip->open($file) !== TRUE) {
die (Could not open archive’);
}
// extract contents to destination directory
$zip->extractTo($destination);
// close archive
$zip->close();
echo 'Archive extracted to directory';
}
// create object
$zip = new ZipArchive() ;
// open archive
if ($zip->open($file) !== TRUE) {
die (Could not open archive’);
}
// extract contents to destination directory
$zip->extractTo($destination);
// close archive
$zip->close();
echo 'Archive extracted to directory';
}