Me he encontrado con un pequeño problema al comprimir archivos en PHP. Tengo una función que comprime una matriz de archivos, estos archivos están en diferentes directorios. La función se parece a:eliminar la estructura del directorio al comprimir archivos en PHP
function create_zip($files = array(),$destination = '',$overwrite = false,$add_to_db=true) {
print_r($files);
$zip = new ZipArchive();
if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return false;
}
for($i=0;$i < count($files); $i++) {
//echo $files[$i].'<br>';
$zip->addFile($files[$i],$files[$i]);
}
$zip->close();
if(file_exists($destination)) {
// echo("Success");
if($add_to_db == true) { add_file($destination); }
return true;
} else {
//echo("Failed");
return false;
}
}
Cuando un usuario descarga y extrae la cremallera de la estructura de archivos es como:
carpeta/carpeta2/file1.jpg
carpeta/file2.jpg
carpeta/carpeta2 /folder3/file3.jpg
Mi pregunta es, ¿es posible que PHP coloque todos los archivos en la raíz del archivo zip e ignore la estructura dada. Por lo que los archivos extraídos se vería así:
/file1.jpg
/file2.jpg
/file3.jpg
La única solución que se me ocurrió fue moviendo todos los archivos en una carpeta y luego comprimir esta carpeta, pero esto parecía excesivo.