Comunidad de diseño web y desarrollo en internet online

como copiar subcarpeta y archivo a otra carpeta?

Citar            
MensajeEscrito el 21 Mar 2011 03:10 am
hola a todos, en esta ocasion estoy tratando de copiar lo siguiente:
tengo una carpeta llamada usuarios y dentro de esta tengo un archivo index.php y una carpeta imagenes
lo que quiero es copiar todo lo que esta dentro de la carpeta usuarios a la nueva carpeta que se crea $username/ cuando el usuario se registra, en el codigo abajo solo copia el archivo index.php, pero no la carpeta imagenes
alguna idea para que copie tambien la carpeta imagenes?, gracias.




$homepath = "$username/";
$filesdir = "usuarios/";


if ($dir = opendir($filesdir)) {

while (false !== ($file = readdir($dir)))
{

if ($file != "." && $file != "..") {

if (is_file($file)) {

$cpFiles[] = $file;

}
}

} //end while




$username = $_REQUEST["user_name"];
$userDir = $homepath;

//create the new directory
$newDir = mkdir($userDir, 0777);


if (!$newDir) {

//If directory not created, end script and display error message

exit("La Carpeta del Usuario no fue creada. Por Favor enviar un email a [email protected].");

}

else {

//Begin copying files listed in the cpFiles array to the new directory.

foreach($cpFiles as $theFile) {

copy($filesdir.$theFile,$userDir.$theFile);

}


}

}

Por nihao

46 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Mar 2011 04:20 am
lee sobre las SPL de php bueno te pongo un ejemplo que tengo ye stoy usando actualmente

Código PHP :

        function copyDirectory($path,$to)
   {
   $path = rtrim(DS(realpath($path)),'/');
   $to = DS($to);
      if(is_dir($path))
      {
         if(!is_dir($to))
         {
            mkdir($to);
         }
         if(!is_dir($to)){ return false; }
         $directorio = new RecursiveDirectoryIterator($path);
         foreach (new RecursiveIteratorIterator($directorio, RecursiveIteratorIterator::SELF_FIRST) as $file)
         {
            $actual = DS($file->getPathName());
            $destino = DS(str_replace($path,"",$file->getPathName()));
            if($file->isDir())
            {
               mkdir($to.$destino);
               //echo 'crea dir :'.$destino;
            }
            else
            {
               //echo 'copya archivo :'.$to.$destino;
               copy($actual,$to.$destino);
            }
             //echo $file->getPathName()."\n";
         }
      }
      return false;
   }

sirve con php5.3 en adelante pero creo que php5.2.15 ya incorpora las recursividades
haz la prueba

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Mar 2011 05:33 am
ok , voy a hacer la prueba. Pero en mi codigo se puede incorporar algo para que copie la carpeta imagenes y el archivo index juntos a una nueva carpeta? debido que solo se copia el archivo y no la carpeta imagenes.

Por nihao

46 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Mar 2011 06:14 pm
al usar el codigo de arriba ahora no me crea ni siquiera la primera carpeta, no crea nada.

mi codigo funciona bien , el problema que no me copia la subcarpeta imagenes , alguna idea de como implementarlo en mi codigo? gracias.

Por nihao

46 de clabLevel



 

msie8
Citar            
MensajeEscrito el 21 Mar 2011 07:25 pm
problema solucionado!!!, se me ocurrio crear la carpeta imagenes en vez de tratar de copiarla como subdirectorio. aqui dejo el codigo completo el cual permite crear una carpeta con la variable $username cuando un usuario se registra, copiar un archivo index.php dentro de ella y luego crear una carpeta imagenes tambien dentro de la carpeta $username.

nice works!



$homepath = "$username/";
$subpath = "$homepath/imagenes/";
$filesdir = "usuarios/";


if ($dir = opendir($filesdir)) {

while (false !== ($file = readdir($dir)))
{

if ($file != "." && $file != "..") {

if (is_file($file)) {

$cpFiles[] = $file;

}
}

} //end while




$username = $_REQUEST["user_name"];
$userDir = $homepath;
$cartDir = $subpath;
//create the new directory
$newDir = mkdir($userDir, 0777);
$otroDir = mkdir($cartDir, 0777);

if (!$newDir) {

//If directory not created, end script and display error message

exit("La Carpeta del Usuario no fue creada. Por Favor enviar un email a [email protected].");

}
elseif (!$cartDir) {

//If directory not created, end script and display error message

exit("La Carpeta del Usuario no fue creada. Por Favor enviar un email a [email protected].");

}

else {

//Begin copying files listed in the cpFiles array to the new directory.

foreach($cpFiles as $theFile) {

copy($filesdir.$theFile,$userDir.$theFile);

}


}

}

}

Por nihao

46 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.