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
<?php //primero creamos la función que hace la magia //esta funcion recorre carpetas y subcarpetas //añadiendo todo archivo que encuentre a su paso //recibe el directorio y el zip a utilizar function agregar_zip($dir, $zip){ $lista = ""; //verificamos si $dir es un directorio //abrimos el directorio y lo asignamos a $da //leemos del directorio hasta que termine //Si es un directorio imprimimos la ruta //y llamamos recursivamente esta función //para que verifique dentro del nuevo directorio //por mas directorios o archivos $lista .= '<br/> '.$archivo.' <input type="checkbox" name="'.$archivo.'" value="1" />'; echo "<strong>Creando directorio: $dir$archivo</strong><br/>"; agregar_zip($dir.$archivo . "/", $zip); //si encuentra un archivo imprimimos la ruta donde se encuentra //y agregamos el archivo al zip junto con su ruta } echo "Agregando archivo: $dir$archivo <br/>"; $zip->addFile($dir.$archivo, $dir.$archivo); } } //cerramos el directorio abierto en el momento } } } //fin de la función //creamos una instancia de ZipArchive $zip = new ZipArchive(); //directorio a comprimir //la barra inclinada al final es importante //la ruta debe ser relativa no absoluta $dir = "./"; //ruta donde guardar los archivos zip, ya debe existir $rutaFinal="./descargas"; $archivoZip = "directorios.zip"; if($zip->open($archivoZip,ZIPARCHIVE::CREATE)===true) { agregar_zip($dir, $zip); $zip->close(); //Muevo el archivo a una ruta //donde no se mezcle los zip con los demas archivos //Hasta aqui el archivo zip ya esta creado //Verifico si el archivo ha sido creado echo "Proceso Finalizado!! <br/><br/> Descargar: <a href='$rutaFinal$archivoZip'>$archivoZip</a>"; }else{ echo "Error, archivo zip no ha sido creado!!"; } } ?>