2011-03-08 10 views
7

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.

Respuesta

Cuestiones relacionadas