Traductor

Errores Imprevistos en el envío de Archivos

Cuando se escribe para Internet nos enfrentamos a cientos o quizá miles de situaciones diferentes, entre los equipos del cliente  sus navegadores, el servidor y los comportamientos posibles es conveniente tratar de prever el máximo número posible de situaciones en las que puede producirse un error durante la ejecución de nuestros scripts

Un ejemplo clásico es querer grabar un fichero con la función move_uploaded_file(), en una ruta inexistente, posiblemente al escribir mal el nombre de la ruta.
Como vimos en el capítulo anterior, nosotros creeríamos que PHP nos arrojaría el mensaje de 
El fichero no se ha podido grabar
Pero PHP intentará ejecutar la grabación de archivo y al no encontrar el directorio señalara un error como el siguiente:


Warning: move_uploaded_file(ficherosEnviados/fotoDelUsuario.jpg): failed to open stream: No such file or directory in C:\xampp\htdocs\ejemplos\cap_05\comprobarYVolver.php on line 28

Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php8820.tmp' to 'ficherosEnviados/fotoDelUsuario.jpg' in C:\xampp\htdocs\ejemplos\cap_05\comprobarYVolver.php on line 28
El fichero no se ha podido grabar.


Como ve es una salida bastante desagradable, por lo tanto, cunado empleemos una instrucción que creemos puede dar un error, lo que hacemos es anteponerle el signo de arroba @, de modo que no se muestren los mensajes de errores de PHP. y se puede seguir procesando el script.
La forma de colocarlo sería:
<?php
       $error=false;
// Se comprueba si el archivo tiene el formato adecuado.
         if ($_FILES["fichero"]["type"]!="image/jpeg") {
                   $error=true;
         }

// Se comprueba que tenga un peso adecuado.
         if ($_FILES["fichero"]["size"] > 200000) {
                   $error=true;
         }

// Se comprueba que no se hayan producido errores.
         if ($_FILES["fichero"]["error"] != 0) {
                   $error=true;
         }

// Si se ha producido algún error se vuelve al formulario inicial.
         if ($error){
                   echo ("<script language='javascript' type='text/javascript'>");
                   echo ("location.href='comporbarYVolver.htm';");
                   echo ("</script>");
         }

// Por último, se intenta grabar y se comprueba si se graba bien.
         $archivoRecibido=$_FILES["fichero"]["tmp_name"];
         $destino="ficherosEnviados/fotoDelUsuario.jpg";
         if (@move_uploaded_file ($archivoRecibido, $destino)) {
                   echo ("Fichero grabado");
         } else {
                   echo ("El fichero no se ha podido grabar.");
         }
?>
Observe la parte resaltada en rojo, el @ le indica al interprete que si la función da un error no lo muestre y continúe la ejecución del script.
El código anterior intentarpa grabar en un directorio "ficherosEnviados" que no existe, recuerde que el que nosotros habíamos creado era "ficherosSubidos".

Bien, a modo de conclusión, cuando usted emplee una función que le pueda arrojar un error, ocupe esta técnica para evitar que aparezca e error, existen diferentes maneras de evitar que aparezcan errores desde php.ini, las cuales veremos después.

Recuerden Comentar Compartir y Darle 

Hasta la Próxima

Si te hemos ayudado : )
Te agradeceríamos que apoyaras este proyecto

0 comentarios:

Publicar un comentario