Foros del Web » Programando para Internet » PHP »

Uso de FTP mediante php. Subir directorios Completos

Estas en el tema de Uso de FTP mediante php. Subir directorios Completos en el foro de PHP en Foros del Web. Hola amigos, estoy busncando la forma de subir, directorios con subdirectorios completos. Y parece ser que el ftp_put es solo para archivos.. Alguien sabe algo? ...
  #1 (permalink)  
Antiguo 29/11/2006, 10:11
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años, 7 meses
Puntos: 28
Uso de FTP mediante php. Subir directorios Completos

Hola amigos, estoy busncando la forma de subir, directorios con subdirectorios completos. Y parece ser que el ftp_put es solo para archivos.. Alguien sabe algo? o tengo quehacerlo con script que valla comprobando si es directorio, creando en el ftp, etc?
Gracias un saludo
  #2 (permalink)  
Antiguo 29/11/2006, 10:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Supongo que pretendes mover archivos de un servidor FTP a otro servidor FTP y por eso usas las funciones de FTP de PHP como para crear un cliente FTP? ..

Por qué si dices "subir" .. entiendo que subes archivos del "cliente" al servidor .. en ese caso las funciones FTP no intervienen en el archivo que seleccionas en el cliente que con HTML y campos "file" sería a seleccionar uno por uno.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 29/11/2006, 10:25
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años, 7 meses
Puntos: 28
gracias por la rapida respuesta cluster.
Claro me refiero a subir de un servidor a otro servidor, es por eso que tengo que iniciar sesion ftp desde php, quiero automatizar el proceso.
La idea es copiar sitios completos.
  #4 (permalink)  
Antiguo 29/11/2006, 10:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues parece que dentro del protocolo FTP no hay función para copiar tomar un directorio completo con sub-directorios y sus archivos, es necesario recursivamente irse metiendo en todas las "ramas" de tu estructura de directorios de tu servidor FTP para ir generando lo mismo en el otro servidor FTP al que te conectas si es que no existe ya.

Revisa los comentarios de los usuarios de las funciones de FTP .. por ejemplo tienes este comentario:
Cita:
Kristy Christie (kristy at isp7 dot net)
15-Jun-2004 02:50
Here's a little function that I created to recurse through a local directory and upload the entire contents to a remote FTP server.

In the example, I'm trying to copy the entire "iwm" directory located at /home/kristy/scripts/iwm to a remote server's /public_html/test/ via FTP.

The only trouble is that for the line "if (!ftp_chdir($ftpc,$ftproot.$srcrela))", which I use to check if the directory already exists on the remote server, spits out a warning about being unable to change to that directory if it doesn't exist.

But an error handler should take care of it.

My thanks to the person who posted the snippet on retrieving the list of files in a directory.

For the version of the script that echo's it's progress as it recurses & uploads, go to: http://pastebin.com/73784

Código PHP:
<?php

// --------------------------------------------------------------------
// THE TRIGGER
// --------------------------------------------------------------------

   // set the various variables
   
$ftproot "/public_html/test/";
   
$srcroot "/home/kristy/scripts/";        
   
$srcrela "iwm/";

   
// connect to the destination FTP & enter appropriate directories both locally and remotely
   
$ftpc ftp_connect("ftp.mydomain.com");
   
$ftpr ftp_login($ftpc,"username","password");

   if ((!
$ftpc) || (!$ftpr)) { echo "FTP connection not established!"; die(); }
   if (!
chdir($srcroot)) { echo "Could not enter local source root directory."; die(); }
   if (!
ftp_chdir($ftpc,$ftproot)) { echo "Could not enter FTP root directory."; die(); }

   
// start ftp'ing over the directory recursively
   
ftpRec ($srcrela);

   
// close the FTP connection
   
ftp_close($ftpc);

// --------------------------------------------------------------------
// THE ACTUAL FUNCTION
// --------------------------------------------------------------------
function ftpRec ($srcrela)
{
   global 
$srcroot;
   global 
$ftproot;
   global 
$ftpc;
   global 
$ftpr;
               
   
// enter the local directory to be recursed through
   
chdir($srcroot.$srcrela);
   
   
// check if the directory exists & change to it on the destination
   
if (!ftp_chdir($ftpc,$ftproot.$srcrela))
   {
       
// remote directory doesn't exist so create & enter it
           
ftp_mkdir    ($ftpc,$ftproot.$srcrela);
           
ftp_chdir    ($ftpc,$ftproot.$srcrela);
   }

   if (
$handle opendir("."))
   {
       while (
false !== ($fil readdir($handle)))
       {
           if (
$fil != "." && $fil != "..")    
           {
               
// check if it's a file or directory
               
if (!is_dir($fil))
               {    
                   
// it's a file so upload it
                   
ftp_put($ftpc$ftproot.$srcrela.$fil$filFTP_BINARY);
               }
               else
               {
                   
// it's a directory so recurse through it
                   
if ($fil == "templates")
                   {
                           
// I want the script to ignore any directories named "templates"
                           // and therefore, not recurse through them and upload their contents
                   
}
                   else
                   {
                       
ftpRec ($srcrela.$fil."/");
                       
chdir ("../");
                   }
               }
         }
     }
     
closedir($handle);
   }    
}
?>
www.php.net/ftp

Seguro que tienes alguna classe/función más completa en sitios como www.phpclasses.org

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 29/11/2006, 11:49
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años, 7 meses
Puntos: 28
Te lo agradezco de veras. Seguro que me valdrá.
Para lo que necesites: [email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:11.