Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Copiar/pegar archivos/carpetas de origen a destino

Estas en el tema de Copiar/pegar archivos/carpetas de origen a destino en el foro de PHP en Foros del Web. Buenas tardes, estoy intentando un "copiar/pegar" con código php de archivos y carpetas. El sistema de archivos/carpetas es: - inicio.php - destino (vacía) - origen: ...
  #1 (permalink)  
Antiguo 10/05/2014, 09:44
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Copiar/pegar archivos/carpetas de origen a destino

Buenas tardes,

estoy intentando un "copiar/pegar" con código php de archivos y carpetas.

El sistema de archivos/carpetas es:

- inicio.php
- destino (vacía)
- origen:
--- index.php
---carpeta
------pepito1.php
------pepito2.php


La idea es copiar todo lo que hay en origen y crearlo en destino. Me funciona pero hay algún fallo o alguna cosa que no termina de funcionar.

Cuando lee los archivos/carpetas, me dice que "index.php" es una carpeta.

He usado is_dir() y is_file().



El código de inicio.php es el que hace copiar/pegar:

Código PHP:

$CARPETA_ORIGEN  
"origen";
$CARPETA_DESTINO "destino";

//Abre una carpeta (para indicar la ruta actual sería ".")
if($carpeta=opendir($CARPETA_ORIGEN)){

    
//Obtener los archivos de una carpeta
    
obtener_archivos($carpeta,$CARPETA_ORIGEN,$CARPETA_DESTINO);

    
closedir($carpeta);

}

////////////////////////////////////////////////////////////////////////////////////////////////////////
// Obtiene archivos de una carpeta
function obtener_archivos($carpeta,$origen,$destino){
    
    
//obtenemos un archivo y luego otro sucesivamente
    
while(false!==($archivo_carpeta=readdir($carpeta))){

        echo(
"<br/><br/>>>>");
        echo(
"<br/>Archivo/Carpeta: ".$archivo_carpeta);
        echo(
"<br/>Origen: ".$origen);
        echo(
"<br/>Destino: ".$destino);

        if(
$archivo_carpeta=="." || $archivo_carpeta=="..") echo("<br/>omito: ".$archivo_carpeta);
        else{

            
//Si es un archivo
            
if(is_file($archivo_carpeta)) echo("<br/>Soy archivo: ".$archivo_carpeta);
            
//Es una carpeta
            
else echo("<br/>Soy carpeta: ".$archivo_carpeta);

        }

    }    


Me pueden decir donde está el error?

Lo curioso es que si creo un archivo "index.php" junto a "inicio.php" entonces detecta que "index.php" es archivo.

Saludos

Última edición por xinxan22; 10/05/2014 a las 10:05
  #2 (permalink)  
Antiguo 10/05/2014, 10:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Copiar/pegar archivos/carpetas de origen a destino

El asunto es que no entiendes como funciona readdir(), pues $archivo_carpeta no es la ruta del archivo/carpeta completa, por lo tanto is_file() siempre será falso.

Y según tu lógica en el else asumes que en caso se no ser un archivo, ¿es una carpeta? ¿eso te hace sentido?

Esa lógica es ridícula, ¿por qué no comparas también con is_dir() para salir de la duda?

Código PHP:
Ver original
  1. //Si es un archivo
  2. if(is_file($archivo_carpeta)) echo("<br/>Soy archivo: ".$archivo_carpeta);
  3. //Es una carpeta
  4. else if(is_dir($archivo_carpeta)) echo "<br> Soy una carpeta:" . $archivo_carpeta;
  5. else echo("<br/>NO EXISTO: ".$carpeta.'/'.$archivo_carpeta);

El asunto clave es que debes prefijar la ruta, pues $archivo_carpeta es únicamente el nombre del archivo.

¿Se entiende?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/05/2014, 10:56
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Copiar/pegar archivos/carpetas de origen a destino

Hola,

estoy usado "$archivo_carpeta" como tal dice la variable "archivo" o "carpeta".

Así pues, dentro de origen tengo la carpeta "carpeta" y el archivo "index.php", esos son los resultados que obtengo.

Si añado el is_dir tal como me has dicho, el resultado que obtengo es:


Código HTML:
>>>
Archivo/Carpeta: .
Origen: origen
Destino: destino
omito: .

>>>
Archivo/Carpeta: ..
Origen: origen
Destino: destino
omito: ..

>>>
Archivo/Carpeta: index.php
Origen: origen
Destino: destino
NO EXISTO: index.php

>>>
Archivo/Carpeta: carpeta
Origen: origen
Destino: destino
NO EXISTO: pepon

Esta leyendo todo lo que hay dentro de origen:

.
..
carpeta
index.php

y parece que no reconoce nada.

Como has dicho el funcionamiento no lo entiendo muy bien pues fuí a http://www.php.net/manual/es/function.readdir.php y cogí el ejemplo de lectura de archivos/carpetas.

Saludos
  #4 (permalink)  
Antiguo 10/05/2014, 11:07
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Copiar/pegar archivos/carpetas de origen a destino

Cita:
Iniciado por pateketrueke Ver Mensaje

El asunto clave es que debes prefijar la ruta, pues $archivo_carpeta es únicamente el nombre del archivo.
Vale no había leído bien esto:

entonces ya lo tengo solucionado:

Código PHP:


$ruta
=$origen."/".$archivo_carpeta;
            
//Si es un archivo
if(is_file($ruta)) {

}
//Si es una carpeta
else if(is_dir($ruta)){



Etiquetas: destino, origen
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 16:10.