- readfile: documentation ( source)
- header: documentation ( source)
- filesize: documentation ( source)
<?php
// Get folder name
$folder = $params['folder'];
$zipFolder = $folder . '.zip';
// Get instance of ZipArchive
$zipArchive = new ZipArchive();
// Open zip archive
$zipArchive->open($zipFolder, ZIPARCHIVE::CREATE);
$zipArchive->addEmptyDir($folder);
//zipFolderFiles($folder, $zipArchive);
// Close zip archive
$zipArchive->close();
// Download archive
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=' . $zipFolder);
header('Content-Length: ' . filesize($zipFolder));
readfile($zipFolder);
// Recursive zip creation function
function zipFolderFiles($dir, &$zipArchive) {
//$base_path = './uploads/tenders/';
//$ffs = scandir($base_path . $dir);
//if (!is_array($ffs) || empty($ffs)) return;
//foreach ($ffs as $ff) {
// if ($ff != '.' && $ff != '..') {
// if (is_dir($base_path . $dir . '/' . $ff)) {
// $zipArchive->addEmptyDir($ff);
// zipFolderFiles($dir . '/' . $ff, $zipArchive);
// } else {
// $zipArchive->addFile($base_path . $dir . '/' . $ff, $ff);
// }
// }
//}
}