Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/05/2013, 02:48
eamanesims
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 5 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