Sunday, 21 April 2013

Create Download and Open Zip File in PHP


Introduction
This article describes a simple PHP function that can be used to create a Zip file archive with PHP. The function receives two parameters: an array with the path-name of the files to be added to the archive, and a string with the path-name of the Zip file that will be created. PHP's ZIP class provides all the functionality you need! To make the process a bit easier for you, I've coded a simple create_zip function for you to use in your projects.
  • Important: If you work on a Linux system, PHP must have CHMOD write permisions in the directory in which the Zip file archive will be created.
zipe-create.jpg
Example
Code to create a Zip file

Let's see one example that shows you how to create a Zip file. Here, I have create a function that creates a Zip file.

<?php
function createZip($files, $zip_file) {
   $zip = new ZipArchive;

  if($zip->open($zip_file, ZipArchive::CREATE) === TRUE)
  {
    foreach($files as $file)
    {
      $zip->addFile($file);
    }                               
    $zip->close();
    return true;
  }
  else return false;
}
$files = array('file1.txt', 'image.jpg', 'audio.mp3');

$zip_file = 'final.zip';
if(createZip($files, $zip_file))
  echo 'The '. $zip_file. ' successfully created';
else
  echo 'Unable to create the '. $zip_file. ' file';
?>
Output
zipe-create -file.jpg
If the $zip_file already exists on the server, the files will be added to that archive, also keeping the existing files in the ZIP.
  • To overwrite the Zip archive, replace CREATE with OVERWRITE .
  • If you want the Zip archive to be downloaded after it was created, use the following code.
Code to download and open a Zip file
The following is sample code to download and open a Zip file:
<?php

// here the code that adds the files in ZIP archive

header('Content-type: application/zip');
header('Content-disposition: filename="'. $zip_file. '"');
header('Content-length:'filesize($zip_file));
readfile($zip_file);
exit();
?>
Output
zipe-download-and-open-file.jpg
zipe-download-and-open-file2.jpg

No comments:

Post a Comment