Título: Descargar los archivos de una carpeta de un servidor + PHP
Publicado por: Shell Root en 26 Enero 2011, 00:18 am
Como podría hacer que por ejemplo, toda la carpeta de httpdocs se descargará en mi laptop. Ya sea archivo por archivo -automaticamente- o crear un ZIP o RAR con los archivos y después descargarlo.
Si tiene un script por ahí podrían pasármelo, mientras tanto voy a construirlo. Alguna ayuda?
Título: Re: Descargar los archivos de una carpeta de un servidor + PHP
Publicado por: #!drvy en 26 Enero 2011, 00:48 am
Suponiendo que la carpeta tiene un index donde hace lista a todos los archivos o que es un script en el mismo host donde estan los archivos ?
Saludos
Título: Re: Descargar los archivos de una carpeta de un servidor + PHP
Publicado por: Shell Root en 26 Enero 2011, 00:49 am
En el mismo host donde están los archivos.
Título: Re: Descargar los archivos de una carpeta de un servidor + PHP
Publicado por: #!drvy en 26 Enero 2011, 01:19 am
<?php // drvy $carpeta = 'files/'; $permitidos = array('php','css','html','p0rnxD'); $archivo_final = 'descargas.zip'; // .zip * $zip = new ZipArchive(); if ($zip->open($archivo_final, ZIPARCHIVE::CREATE)==TRUE){ while (false !== ($archivo = readdir($abrir))) { if (in_array($extension, $permitidos)) { $zip->addFile($carpeta.$archivo,$archivo); } } } else {echo ' no se ha podido abrir la carpeta';} } else {echo 'No se ha podido crear un archivo zip!';} $zip->close(); echo 'Listo'; ?>
Lo hice algo rapidito pero funciona segun probé. Saludos
Título: Re: Descargar los archivos de una carpeta de un servidor + PHP
Publicado por: Shell Root en 26 Enero 2011, 01:27 am
Gracias, aun no lo pruebo, pero cabe aclarar a qué dentro de httpdocs hay subcarpetas y así sucesivamente...
Título: Re: Descargar los archivos de una carpeta de un servidor + PHP
Publicado por: #!drvy en 26 Enero 2011, 02:31 am
<?php //drvy $carpeta = 'files/'; $permitidos = array('php','css'); $archivo_final = 'descargas.zip'; // .zip * $zip = new ZipArchive(); if ($zip->open($archivo_final, ZIPARCHIVE ::CREATE)!=TRUE){die('No se ha podido crear un archivo zip!');} function archivar($carpeta,$permitidos,$zip) { foreach($carpetas as $archivo) { if (($archivo == '.')||($archivo == '..')){} elseif (is_dir($carpeta.'/'.$archivo)){ archivar($carpeta.'/'.$archivo,$permitidos,$zip); }else{ if (in_array($extension, $permitidos)) { $zip->addFile($carpeta.'/'.$archivo,$carpeta.'/'.$archivo); } } } } archivar($carpeta,$permitidos,$zip); $zip->close(); echo 'Listo'; ?>
Adapte un script que encontré en opendir() (http://www.php.net/manual/en/function.opendir.php#90602) que permitia explorar todos los directorios, sub-directorios.... y las ovejas de las ovejas de una carpeta. Lo malo es que, una vez creado el ZIP al explorarlo las carpetas no están marcadas como tal pero si son accesibles y funciona todo bien. PD: Ten en cuenta que si hay muchos directorios y archivos es posible que el max_execution_time se sobre pase y por lo tanto no conseguir nada xD. Saludos
Título: Re: Descargar los archivos de una carpeta de un servidor + PHP
Publicado por: WHK en 26 Enero 2011, 18:23 pm
recursivo: function comprimir($ruta, $zip_salida, $handle = false, $recursivo = false){ return false; /* La ruta no existe */ /* Declara el handle del objeto */ if(!$handle){ $handle = new ZipArchive; if ($handle->open($zip_salida, ZipArchive::CREATE) === false){ return false; /* Imposible crear el archivo ZIP */ } } /* Procesa directorio */ $ruta = dirname($ruta.'/arch.ext'); /* Aseguramos que sea un directorio sin carácteres corruptos */ $handle->addEmptyDir($ruta); /* Agrega el directorio comprimido */ foreach(glob($ruta.'/*') as $url){ /* Procesa cada directorio o archivo dentro de el */ comprimir($url, $zip_salida, $handle, true); /* Comprime el subdirectorio o archivo */ } /* Procesa archivo */ }else $handle->addFile($ruta); /* Finaliza el ZIP si no se está ejecutando una acción recursiva en progreso */ if(!$recursivo) $handle->close(); return true; /* Retorno satisfactorio */ }
|