elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Descargar los archivos de una carpeta de un servidor + PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Descargar los archivos de una carpeta de un servidor + PHP  (Leído 23,096 veces)
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Descargar los archivos de una carpeta de un servidor + PHP
« 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?


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Descargar los archivos de una carpeta de un servidor + PHP
« Respuesta #1 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


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Descargar los archivos de una carpeta de un servidor + PHP
« Respuesta #2 en: 26 Enero 2011, 00:49 am »

En el mismo host donde están los archivos.
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Descargar los archivos de una carpeta de un servidor + PHP
« Respuesta #3 en: 26 Enero 2011, 01:19 am »

Código
  1. <?php
  2. // drvy
  3. $carpeta = 'files/';
  4. $permitidos = array('php','css','html','p0rnxD');
  5. $archivo_final = 'descargas.zip';  // .zip *
  6.  
  7. $zip = new ZipArchive();
  8. if ($zip->open($archivo_final, ZIPARCHIVE::CREATE)==TRUE){
  9. if ($abrir = opendir($carpeta)) {
  10. while (false !== ($archivo = readdir($abrir))) {
  11. $extension = substr($archivo, strrpos($archivo, '.') + 1);
  12. if (in_array($extension, $permitidos)) {
  13. $zip->addFile($carpeta.$archivo,$archivo);
  14. }
  15. }
  16. closedir($abrir);
  17. } else {echo ' no se ha podido abrir la carpeta';}
  18. } else {echo 'No se ha podido crear un archivo zip!';}
  19. $zip->close();
  20. echo 'Listo';
  21.  
  22. ?>
  23.  

Lo hice algo rapidito pero funciona segun probé.



Saludos
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Descargar los archivos de una carpeta de un servidor + PHP
« Respuesta #4 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...
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Descargar los archivos de una carpeta de un servidor + PHP
« Respuesta #5 en: 26 Enero 2011, 02:31 am »

Código
  1. <?php
  2. //drvy
  3.  
  4. $carpeta = 'files/';
  5. $permitidos = array('php','css');
  6. $archivo_final = 'descargas.zip';  // .zip *
  7. $zip = new ZipArchive();
  8. if ($zip->open($archivo_final, ZIPARCHIVE::CREATE)!=TRUE){die('No se ha podido crear un archivo zip!');}
  9.  
  10. function archivar($carpeta,$permitidos,$zip)
  11. {
  12.        $carpetas = scandir($carpeta);
  13.        foreach($carpetas as $archivo)
  14.        {
  15.                if (($archivo == '.')||($archivo == '..')){}
  16.  
  17.                elseif (is_dir($carpeta.'/'.$archivo)){
  18. archivar($carpeta.'/'.$archivo,$permitidos,$zip);
  19.  
  20. }else{
  21. $extension = substr($archivo, strrpos($archivo, '.') + 1);
  22. if (in_array($extension, $permitidos)) {
  23.                        $zip->addFile($carpeta.'/'.$archivo,$carpeta.'/'.$archivo);
  24. }
  25.                }
  26.        }
  27. }
  28.  
  29. archivar($carpeta,$permitidos,$zip);
  30. $zip->close();
  31. echo 'Listo';
  32. ?>
  33.  

Adapte un script que encontré en opendir() 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
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Descargar los archivos de una carpeta de un servidor + PHP
« Respuesta #6 en: 26 Enero 2011, 18:23 pm »

recursivo:

Código
  1. function comprimir($ruta, $zip_salida, $handle = false, $recursivo = false){
  2.  
  3.  if(!is_dir($ruta) and !is_file($ruta))
  4.   return false; /* La ruta no existe */
  5.  
  6.  /* Declara el handle del objeto */
  7.  if(!$handle){
  8.   $handle = new ZipArchive;
  9.   if ($handle->open($zip_salida, ZipArchive::CREATE) === false){
  10.    return false; /* Imposible crear el archivo ZIP */
  11.   }
  12.  }
  13.  
  14.  /* Procesa directorio */
  15.  if(is_dir($ruta)){
  16.   $ruta = dirname($ruta.'/arch.ext'); /* Aseguramos que sea un directorio sin carácteres corruptos */
  17.   $handle->addEmptyDir($ruta); /* Agrega el directorio comprimido */
  18.   foreach(glob($ruta.'/*') as $url){ /* Procesa cada directorio o archivo dentro de el */
  19.    comprimir($url, $zip_salida, $handle, true); /* Comprime el subdirectorio o archivo */
  20.   }
  21.  
  22.  /* Procesa archivo */
  23.  }else
  24.   $handle->addFile($ruta);
  25.  
  26.  /* Finaliza el ZIP si no se está ejecutando una acción recursiva en progreso */
  27.  if(!$recursivo)
  28.   $handle->close();
  29.  
  30.  return true; /* Retorno satisfactorio */
  31. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tamaño de un Archivos o Carpeta
Programación Visual Basic
kakinets 5 2,635 Último mensaje 24 Septiembre 2005, 00:06 am
por kakinets
Compartir carpeta en red con Servidor de Archivos Windows Server 2008
Redes
sparrowise 4 18,808 Último mensaje 13 Julio 2011, 17:19 pm
por madpitbull_99
carpeta vacia en servidor
Windows
OssoH 1 2,475 Último mensaje 25 Mayo 2010, 16:58 pm
por Randomize
Servidor de correos y Servidor de archivos bajo freeBSD
GNU/Linux
spectre89 3 6,027 Último mensaje 25 Julio 2010, 06:41 am
por unixgeek
Descargar archivos del servidor y mysql
PHP
mark182 2 3,927 Último mensaje 9 Noviembre 2010, 17:11 pm
por mark182
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines