Advertisement
Guest User

Stackoverflow 20124545

a guest
Nov 22nd, 2013
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.55 KB | None | 0 0
  1. function zipDirectory($source, $destination, $flag = '') {
  2.     if (!extension_loaded('zip') || !file_exists($source)) {
  3.         return false;
  4.     }
  5.     $zip = new ZipArchive();
  6.     if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
  7.         return false;
  8.     }
  9.     $source = str_replace('\\', '/', realpath($source));
  10.     if ($flag) {
  11.         $flag = basename($source) . '/';
  12.         //$zip->addEmptyDir(basename($source) . '/');
  13.     }
  14.     if (is_dir($source) === true) {
  15.         $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
  16.         foreach ($files as $file) {
  17.             $file = str_replace('\\', '/', realpath($file));
  18.             if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) continue;
  19.             if (is_dir($file) === true) {
  20.                 $zip->addEmptyDir(str_replace($source . '/', '', $flag . $file . '/'));
  21.             } else if (is_file($file) === true) {
  22.                 $zip->addFromString(str_replace($source . '/', '', $flag . $file), file_get_contents($file));
  23.             }
  24.         }
  25.     } else if (is_file($source) === true) {
  26.         $zip->addFromString($flag . basename($source), file_get_contents($source));
  27.     }
  28.     return $zip->close();
  29. }
  30. $zip_file = 'temp_' . $downloadID . '.zip';
  31. zipDirectory($downloadID.'/', $zip_file, false);
  32. header("Content-Type: application/zip");
  33. header("Content-Length: ". filesize($zip_file));
  34. header("Content-Disposition: attachment; filename=" . $zip_file);
  35. readfile($zip_file);
  36. unlink($zip_file);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement