Estoy comprimiendo carpetas y archivos con php, pero cuando intento abrir el archivo zip obtengo un archivo cpgz. Después de extraer ese archivo, obtengo otro archivo zip. Lo que hace es escanear lentamente la carpeta actual de archivos y carpetas para comprimir. Este es el código que utilizo:Archivo comprimido con resultados PHP en archivo cpgz después de la extracción
function Zip($source, $destination)
{
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 (is_dir($source) === true)
{
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
foreach ($files as $file)
{
$file = str_replace('\\', '/', realpath($file));
if (is_dir($file) === true)
{
$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
}
else if (is_file($file) === true)
{
$zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
}
}
}
else if (is_file($source) === true)
{
$zip->addFromString(basename($source), file_get_contents($source));
}
return $zip->close();
}
if($_GET["archive"]== 'true'){
$date = date("Ymd_Hi");
$dir = dirname(__FILE__);
$filename = $date.".zip";
Zip(getcwd(), $filename);
header("Content-disposition: attachment; filename=$filename");
header('Content-type: application/zip');
readfile($filename);
unlink($filename);
}
- @ Steven, ¿su archivo comprimido está en el mismo servidor que el código de su aplicación? He tenido exactamente este mismo problema que [resolví aquí] (http://stackoverflow.com/questions/11495103/opening-downloaded-zip-file-creates-cpgz-file). Además, ¿cómo se ve el 'header() 's'? –