php create zip

php code:


/* 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;

  }

}

usage:


$files_to_zip = array(

  'preload-images/1.jpg',

  'preload-images/2.jpg',

  'preload-images/5.jpg',

  'kwicks/ringo.gif',

  'rod.jpg',

  'reddit.gif'

);

//if true, good; if false, zip creation failed

$result = create_zip($files_to_zip,'my-archive.zip');

The function accepts an array of files, the name of the destination files, and whether or not you'd like the destination file to be overwritten if a file of the same name exists. The function returns true if the file was created, false if the process runs into any problems.

Source: create zip with php by david walsh

Leave a Comment