a
open($arquivoZip, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) {
exit("Não foi possível criar o arquivo ZIP.");
}
$origem = realpath($origem);
if (!is_dir($origem)) {
exit("Diretório de origem inválido.");
}
$arquivos = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($origem),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($arquivos as $nome => $arquivo) {
if (!$arquivo->isDir()) {
$caminhoAbsoluto = $arquivo->getRealPath();
$caminhoRelativo = substr($caminhoAbsoluto, strlen($origem) + 1);
$zip->addFile($caminhoAbsoluto, $caminhoRelativo);
}
}
$zip->close();
}
// CONFIGURAÇÕES
$diretorioParaZipar = __DIR__ . '/meu_diretorio'; // Caminho local
$nomeZip = __DIR__ . '/arquivo.zip';
// CRIA O ZIP
ziparDiretorio($diretorioParaZipar, $nomeZip);
// FORÇA O DOWNLOAD
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="arquivo.zip"');
header('Content-Length: ' . filesize($nomeZip));
readfile($nomeZip);
// REMOVE O ARQUIVO ZIPADO APÓS O DOWNLOAD (opcional)
unlink($nomeZip);
exit;