Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function zipDirectory($source, $destination, $flag = '') {
- if (!extension_loaded('zip') || !file_exists($source)) {
- return false;
- }
- $zip = new ZipArchive();
- if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
- return false;
- }
- $source = str_replace('\\', '/', realpath($source));
- if ($flag) {
- $flag = basename($source) . '/';
- //$zip->addEmptyDir(basename($source) . '/');
- }
- if (is_dir($source) === true) {
- $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
- foreach ($files as $file) {
- $file = str_replace('\\', '/', realpath($file));
- if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) continue;
- if (is_dir($file) === true) {
- $zip->addEmptyDir(str_replace($source . '/', '', $flag . $file . '/'));
- } else if (is_file($file) === true) {
- $zip->addFromString(str_replace($source . '/', '', $flag . $file), file_get_contents($file));
- }
- }
- } else if (is_file($source) === true) {
- $zip->addFromString($flag . basename($source), file_get_contents($source));
- }
- return $zip->close();
- }
- $zip_file = 'temp_' . $downloadID . '.zip';
- zipDirectory($downloadID.'/', $zip_file, false);
- header("Content-Type: application/zip");
- header("Content-Length: ". filesize($zip_file));
- header("Content-Disposition: attachment; filename=" . $zip_file);
- readfile($zip_file);
- unlink($zip_file);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement