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


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  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,687 veces)
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<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

Te vendería mi talento por poder dormir tranquilo.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.856



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.724


<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

Te vendería mi talento por poder dormir tranquilo.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.856



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.724


<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

Te vendería mi talento por poder dormir tranquilo.
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.856



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.609


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,917 Último mensaje 24 Septiembre 2005, 00:06 am
por kakinets
Compartir carpeta en red con Servidor de Archivos Windows Server 2008
Redes
sparrowise 4 19,302 Último mensaje 13 Julio 2011, 17:19 pm
por madpitbull_99
carpeta vacia en servidor
Windows
OssoH 1 2,839 Último mensaje 25 Mayo 2010, 16:58 pm
por Randomize
Servidor de correos y Servidor de archivos bajo freeBSD
GNU/Linux
spectre89 3 6,456 Último mensaje 25 Julio 2010, 06:41 am
por unixgeek
Descargar archivos del servidor y mysql
PHP
mark182 2 4,067 Último mensaje 9 Noviembre 2010, 17:11 pm
por mark182
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines