Comunidad de diseño web y desarrollo en internet online

No entiendo el comportamiento de $_FILES[fichero][error]

Citar            
MensajeEscrito el 18 Feb 2010 05:04 pm
Hola, resulta que me estoy devanando los sesos, pero en el manual de php(online) no dicen nada sobre si contiene cadena de texto. Esto viene a cuento a que una de los ejemplos que ponen es:
if $err == ("UPLOAD_ERR_OK"), teniendo que ese valor lo recibe de $err = $_FILES[fichero][error]. Pero yo he hecho dicha asignacion y a continuacion un echo $err y lo que muestra es 0, entonces, como puede pasar por cierta esa condicion?.
Lo digo porque en mi codigo, esa comparacion da true en caso de especificar un fichero, pero segun el echo, el valor que contiene es 0, y por lo tanto no es igual a la cadena "UPLOAD_ERR_OK".
Alguien puede aclararme esto???

Por jb_script

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2010 04:22 am
primero que todo la variable global $_FILES es un array que contiene varios datos entre esos un codigo de error si pues te devuelve 0 es porq no existe algun error, mas si tu quieres saber si envio o no el archivo al temp de tu server pues verifica que $_FILES['nombre']['tmp_name'] sea diferente a vacio algo como esto

if($_FILES['nombre']['tmp_name']!=' '){

echo 'esto te dice que el registro FILE tiene un dato y se puede procesar SAludos ;-)' ;

}

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 19 Feb 2010 10:35 am
No sé qué ejemplo has estado mirando pero a simple vista no parece tener relación alguna con la subida de archivos al servidor. La posición 'error' de $_FILES es un entero, no una cadena y UPLOAD_ERR_OK es una constante entera, no una cadena.

Lo correcto de hacer sería algo así:

Código PHP :

if ($_FILES["archivo"]["error"] > 0) {
  echo "No se cargó el archivo. Error: ".$_FILES["archivo"]["error"];
  exit;
}
else {
  echo "Archivo cargado correctamente :).";
}


Si deseas mostrar un mensaje apropiado al error encontrado sería algo así:

Código PHP :

function FileUploadErrorMsg($error_code) {
    switch ($error_code) { 
        case UPLOAD_ERR_INI_SIZE: 
            return "El archivo es más grande que lo permitido por el Servidor."; 
        case UPLOAD_ERR_FORM_SIZE: 
            return "El archivo subido es demasiado grande."; 
        case UPLOAD_ERR_PARTIAL: 
            return "El archivo subido no se terminó de cargar (probablemente cancelado por el usuario)."; 
        case UPLOAD_ERR_NO_FILE: 
            return "No se subió ningún archivo"; 
        case UPLOAD_ERR_NO_TMP_DIR: 
            return "Error del servidor: Falta el directorio temporal."; 
        case UPLOAD_ERR_CANT_WRITE: 
            return "Error del servidor: Error de escritura en disco"; 
        case UPLOAD_ERR_EXTENSION: 
            return "Error del servidor: Subida detenida por la extención";
      default: 
            return "Error del servidor: ".$error_code; 
    } 
}

if ($_FILES["archivo"]["error"] > 0) {
  echo FileUploadErrorMsg($_FILES["archivo"]["error"]);
  exit;
}
else {
  echo "Archivo cargado correctamente :).";
}

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 19 Feb 2010 03:05 pm

Por jb_script

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2010 05:21 pm
Creo que tienes una gran confusión. UPLOAD_ERR_OK es una constante entera y vale cero. Al comparar $_FILES["archivo"]["error"] == UPLOAD_ERR_OK y resultar verdadero, quiere decir que no hubo ningún error.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

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