Traductor

Procesando los archivos Enviados

Uno de los usos mas habituales de los archivos que son enviados al servidor es su almacenaje en el mismo para ponerlos a disposición de otros usuarios.
Lo mas común en la practica para esta acción, son las fotografías que  los usuarios suben en su perfil (las cuales se almacenan en el servidos), para que otros usuarios las puedan ver.
Vamos a aprender a grabar, en el disco duro del servidor, es decir, los archivos que nos envíe el usuario.
Para esta acción contamos con la función: move_uploade_file()

La sintaxis normalizada implica que recibe dos argumentos, separados por una coma. 
  • El primero corresponde a la propiedad tmp-name del archivo subido.
  • El segundo corresponde al nombre con el que se grabará dicho archivo en el servidor, incluyendo la ruta.
Vamos a comenzar viendo el siguiente listado.
<html>
       <head>
       </head>
       <body>
              <form action="grabarFichero.php" method="post" name="f_prof" id="f_prof" enctype="multipart/form-data">
              Fichero:
                     <input type="file" name="fichero" id="fichero">
                     <input type="submit" value="ENVIAR" name="ok" id="ok">
                     </form>
       </body>

</html>
Como puede ver, no tiene nada en particular. Selecciona un fichero y lo envía al script siguiente:
<?php
      $archivoRecibido=$_FILES["fichero"]["tmp_name"];
      $destino="ficherosSubidos/fotoDelUsuario.jpg";
      move_uploaded_file ($archivoRecibido, $destino);
      echo ("Fichero grabado");

?>

Paso a Paso


  • Cree en su servidor una carpeta en su htdocs de su XAMPP, con el nombre ficherosSubidos
  • A continuación ejecute grabarFichero.html
  • Cargue el fichero imágen.jpg de la carpeta que e había dado en el capítulo anterior
    • Nota: la carpeta ficherosSubidos es una carpeta que pertenece al servidor.
  • Pulse el botón enviar y pasará el archivo seleccionado al script. Dado que está trabajando en su propio ordenador y no en un servidor, la respuesta será prácticamente inmediata.
  • El script PHP le informará que el archivo ha sido grabado en el servidor.
  • Cierre el navegador y abra la carpeta ficherosSubidos.
  • Allí encontrará un archivo de imagen con el nombre fotoDelUsuario.jprg, que es una copia de la imagen.jpg

Que ha sucedido?

  • En primer lugar, hemos usado la propiedad tmp_name del archivo subido para referirnos a él, así:
$archivoRecibido=$_FILES["fichero"]["tmp_name"];
  • A continuación , hemos creado una variable con el nombre con el que grabamos los archivos en el servidor, incluyendo la ruta relativa, tl como se muestra a continuación.
$destino="ficherosSubidos/fotoDelUsuario.jpg";
  • Por ultimo, hemos gravado el archivo mediante el uso de la función que estamos estudiando, así:
move_uploaded_file ($archivoRecibido, $destino);
Este código funciona, sin embargo debemos corregir algunos detalles. Por ejemplo:

  •  El usuario puede equivocarse y mandarnos un archivo de audio en lugar de una imagen. O quizá mande una imagen en otro formato que no queremos usar en nuestra página. 
  • Para evitar esto vamos a usar la propiedad type del archivo subido.
Lo que haremos, será poner una condicional para conseguir lo deseado.
if ($_FILES["fichero"]["type"]!="image/jpeg") {
die ("El fichero no tiene el formato adecuado.");
}
Lo que hacemos es comprobar si el fichero está en formato jpg. Esto no tiene nada que ver con que el nombre del archivo tenga la extensión adecuada. La propiedad type no comprueba la extensión del nombre del archivo, sino e tipo real de formato en e que está grabado.
Observe que, si el formato no es el adecuado, se ejecuta la función die(). Con esto se terminaría la ejecución del script.
Solo se mostraría  el mensaje "El fichero no tiene el formato adecuado." y se acabó, no se graba ningún archivo en el servidor.


En el siguiente , capítulo veremos como limitar el tamaño de los archivos enviados al servidor, NO SE LO PIERDAN!!!

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