Foros del Web » Programando para Internet » PHP »

Mover archivo en servidor desde carpeta temp

Estas en el tema de Mover archivo en servidor desde carpeta temp en el foro de PHP en Foros del Web. Hola de nuevo, me estoy liando con la subida de archivos porque me pasan cosas que no entiendo, a través de un post de otra ...
  #1 (permalink)  
Antiguo 09/05/2013, 02:48
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 2
Mover archivo en servidor desde carpeta temp

Hola de nuevo, me estoy liando con la subida de archivos porque me pasan cosas que no entiendo, a través de un post de otra persona me di cuenta de que estaba usando cURL y no lo necesitaba.

Ahora bien, cambié mi código para mover el archivo una vez subido con move_uploaded_file(), el problema es que:

primero compruebo si ya existe un archivo con ese nombre para sacar sacar un mensaje al usuario, y sino lo subo, lo hago con is_file().

Con los dos codigos sube el archivo el problema es a la hora de identificar si ya existe, si lo hago como lo tenía con cURL is_file() funciona y me detecta si ya existe otro archivo con ese nombre si lo hago con move_uploaded_file no y siempre devuelve false y es que no lo entiendo, la ruta esta bien y es la misma solo modifico la forma de mover el archivo, os muestro los 2 códigos:

1->move_uploaded_file:

Código PHP:
<?
        $tmpfile 
$_FILES['archivo']['tmp_name'];
    
$tmpname $_FILES['archivo']['name'];
    
    
//comprobamos si existe o no el directorio y lo creamos
    
if(!@chdir($directorio)){ mkdir($directorio,00777); }

    if (!empty(
$tmpname))
    {
        if (
is_file($directorio."/".$tmpname))
        {
            
$rpta "Ya existe un archivo con ese nombre";
        }
        else
        {
            if (
is_uploaded_file($tmpfile)) 
            {
                if(
move_uploaded_file($tmpfile$directorio."/".$tmpname))
                {
                    
$rpta 'Archivo subido correctamente.';
                }
            }
            else
            {
                
$rpta 'Error al subir el archivo.';
            }
        }    
    }
    else 
    {
        
$rpta 'Seleccionar un archivo.';
    }
}

?> 
<script>
    alert('<?=$rpta?>');        
</script>

2->cURL:

Código PHP:
<?
         $tmpfile 
$_FILES['archivo']['tmp_name'];
    
$tmpname $_FILES['archivo']['name'];
    if (!empty(
$_FILES['archivo']['name']))
    {
        
$ftpuser "xxxx";
        
$ftppass "1234";
        
        if (
is_file($directorio."/".$tmpname))
        {
            
$rpta "Ya existe un archivo con ese nombre";
        }
        else
        {
            
$ftppath "/dir1/modulo2/".$directorio."/";
            
$ftpurl "ftp://".$ftpuser.":".$ftppass."@".$ftppath;
            
            if (
$tmpname != ""
            {
                
$fp fopen($tmpfile'r');
                
$ch curl_init();
                
curl_setopt($chCURLOPT_URL$ftpurl.$tmpname);
                
curl_setopt($chCURLOPT_UPLOAD1);
                
curl_setopt($chCURLOPT_INFILE$fp);
                
curl_setopt($chCURLOPT_INFILESIZEfilesize($tmpfile));
                
curl_setopt($chCURLOPT_FTP_USE_EPRT1);
                
curl_setopt($chCURLOPT_FTP_CREATE_MISSING_DIRS1);
                
curl_exec($ch);
                
$error curl_errno($ch);
                
curl_close ($ch);
    
                if (
$error == 0
                {
                    
$rpta 'Archivo subido correctamente.';
                } 
                else 
                {
                    
$rpta 'Error al subir el archivo.';
                }
            } 
            else 
            {
                
$rpta 'Seleccionar un archivo.';
            }
        }
    }
}

?> 
<script>
    alert('<?=$rpta?>');        
</script>

Seguro es una estupidez pero no sé qué ocurre, gracias de antemano
  #2 (permalink)  
Antiguo 09/05/2013, 03:52
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 6 meses
Puntos: 331
Respuesta: Mover archivo en servidor desde carpeta temp

LOs archivos que se suben por formulario tienen un nombre temporal aleatorio. move_uploaded_file() sólo te servirá para el archivo subido con el handler actual. Si utilizas la función para comprobar un nombre asignado por tí, siempre dará false. Consulta el manual, hay varios ejemplos para subir archivos.
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 09/05/2013, 06:22
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Mover archivo en servidor desde carpeta temp

Cita:
Iniciado por repara2 Ver Mensaje
LOs archivos que se suben por formulario tienen un nombre temporal aleatorio. move_uploaded_file() sólo te servirá para el archivo subido con el handler actual. Si utilizas la función para comprobar un nombre asignado por tí, siempre dará false. Consulta el manual, hay varios ejemplos para subir archivos.
Salu2
Gracias por contestar, he leído el manual nunca pregunto antes, pero sigo sin entender porqué una vez que el archivo ya está subido (da = cómo, ¿no?) si yo hago un is_file de un archivo que ya esta arriba no lo identifica, ¿o es que en el servidor se queda con el nombre aleatorio que le asigna?

entonces eso debería pasar en el otro código donde lo muevo con cURL también ¿no?, porque también lo subo con formulario.

sigo sin entender la diferencia entre mis 2 códigos, por lo que me dijeron curl lo único que hace es mover el archivo pero con mucho más código, supuestamente hace lo mismo que move_uploaded_file() pero no porque con uno me identifica y con otro no
  #4 (permalink)  
Antiguo 10/05/2013, 01:14
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Mover archivo en servidor desde carpeta temp

nadie puede resolver mi duda?

Parece que la respuesta favorita es 'leete el manual' o 'busca en google' y aunque es verdad que hay mucha gente que lo pide todo hecho muchos otros no somos así, nunca pregunto antes de leerme la parte correspondiente en el manual de php y buscar en google pero si no me queda claro obvio pregunto, como dije esta forma de subir no la usaba, pero en otro tema me comentaron que era mejor y porqué, por eso cambié mi código, ya he visto las formas que hay de subir archivos y no es eso lo que pregunto.
  #5 (permalink)  
Antiguo 10/05/2013, 04:44
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 6 meses
Puntos: 331
Respuesta: Mover archivo en servidor desde carpeta temp

Los handlers de archivos funcionan con caché. Definitivamente tienes que leer no sólo manuales, sino también artículos, libros y cualquier material que encuentres. No puedes esperar que otros programadores tengan o hayan tenido este problema y además que estén disponibles para contestarte.
En cualquier caso, con cualquier problema, por complejo que sea, se soluciona con investigación y documentación.
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #6 (permalink)  
Antiguo 10/05/2013, 05:44
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Mover archivo en servidor desde carpeta temp

Es cierto, pero se da por hecho que los que tenemos dudas quizás obvias para otros, preguntamos aquí sin consultar otras vías previamente / al mismo tiempo que posteamos aquí.

Simplemente si alguien me da una explicación entiendo que esa persona sabe cual es el problema pero si no entiendo la explicación y nunca más contestan... eso no significa que haya dejado de investigar mi problema.

Para eso están los foros para comentar dudas, ayudar en lo que se pueda y compartir aportes sino no escribiría nadie, se aprende investigando tanto individualmente como con otros, he preguntado por una explicación no he pedido que hagan el código, ni que me digan como los tengo que subir, tuve que quitar la caché en el directorio con un .htaccess porque me mostraba los archivos viejos en vez de los nuevos de ahí viene mi problema que con un código funciona y con otro no, gracias = por las respuestas, saludos.

Última edición por eamanesims; 10/05/2013 a las 05:49

Etiquetas: carpeta, servidor
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 23:27.