Wednesday, 2 January 2013

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);

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';
}

No comments:

Post a Comment