Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/10/2014, 15:15
Avatar de HackID1
HackID1
 
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 3 meses
Puntos: 17
Pregunta Recorrer carpeta y elaborar Checkbox con directorios

Hola a todos! ;)

Estoy realizando un programa el cual recorro por medio de PHP la carpeta actual y muestro un listado de los directorios encontrados en la pantalla.

Bien lo que quiero es, por cada directorio que encuentre cree un Checkbox para permitir al usuario seleccionarlo y almacenarlo en un ZIP todos estos directorios mostrando un link que permita descargar este ZIP.

El ZIP debe contener sólo los "directorios" seleccionados por el usuario.

Dejo el código pero este guarda todo y no los directorios y su contenido en el ZIP.

El programa lista la carpeta y su contenido. Y quiero conseguir mostrar el nombre de cada carpeta un checkbox al lado y poder seleccionar cuales quiero guardar en el ZIP

Código PHP:
Ver original
  1. <?php
  2.       //primero creamos la función que hace la magia
  3.       //esta funcion recorre carpetas y subcarpetas
  4.       //añadiendo todo archivo que encuentre a su paso
  5.       //recibe el directorio y el zip a utilizar
  6.       function agregar_zip($dir, $zip){
  7.      
  8.         $lista = "";
  9.         //verificamos si $dir es un directorio
  10.         if (is_dir($dir)) {
  11.           //abrimos el directorio y lo asignamos a $da
  12.           if ($da = opendir($dir)) {          
  13.             //leemos del directorio hasta que termine
  14.             while (($archivo = readdir($da))!== false) {  
  15.               //Si es un directorio imprimimos la ruta
  16.               //y llamamos recursivamente esta función
  17.               //para que verifique dentro del nuevo directorio
  18.               //por mas directorios o archivos
  19.               if (is_dir($dir . $archivo) && $archivo!="." && $archivo!=".."){
  20.                
  21.                 $lista .= '<br/> '.$archivo.' <input type="checkbox" name="'.$archivo.'" value="1" />';
  22.                
  23.                 echo "<strong>Creando directorio: $dir$archivo</strong><br/>";                
  24.                 agregar_zip($dir.$archivo . "/", $zip);  
  25.  
  26.               //si encuentra un archivo imprimimos la ruta donde se encuentra
  27.               //y agregamos el archivo al zip junto con su ruta
  28.               }
  29.               elseif(is_file($dir.$archivo) && $archivo!="." && $archivo!=".."){
  30.                 echo "Agregando archivo: $dir$archivo <br/>";                                    
  31.                 $zip->addFile($dir.$archivo, $dir.$archivo);                    
  32.               }
  33.             }
  34.             //cerramos el directorio abierto en el momento
  35.             closedir($da);
  36.           }
  37.         }      
  38.       } //fin de la función
  39.  //creamos una instancia de ZipArchive      
  40.       $zip = new ZipArchive();
  41.  
  42.       //directorio a comprimir
  43.       //la barra inclinada al final es importante
  44.       //la ruta debe ser relativa no absoluta      
  45.       $dir = "./";
  46.  
  47.       //ruta donde guardar los archivos zip, ya debe existir
  48.       $rutaFinal="./descargas";
  49.  
  50.       $archivoZip = "directorios.zip";  
  51.  
  52.       if($zip->open($archivoZip,ZIPARCHIVE::CREATE)===true) {  
  53.         agregar_zip($dir, $zip);
  54.         $zip->close();
  55.  
  56.         //Muevo el archivo a una ruta
  57.         //donde no se mezcle los zip con los demas archivos
  58.         @rename($archivoZip, "$rutaFinal$archivoZip");
  59.  
  60.         //Hasta aqui el archivo zip ya esta creado
  61.  
  62.         //Verifico si el archivo ha sido creado
  63.         if (file_exists($rutaFinal.$archivoZip)){
  64.           echo "Proceso Finalizado!! <br/><br/>
  65.                Descargar: <a href='$rutaFinal$archivoZip'>$archivoZip</a>";  
  66.         }else{
  67.           echo "Error, archivo zip no ha sido creado!!";
  68.         }                    
  69.       }
  70.      
  71.     ?>
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1