sábado, 19 de marzo de 2011

Formulario para subir imágenes con PHP

De la mano de PC Cuadernos y sus excelentes publicaciones, y gracias a la corrección de @Triby, colaborador en Foros del Web, viene el código que presento a continuación. Se trata de un formulario para subir archivos en formatos JPEG, PNG y GIF. No es nada complicado; de hecho, el formulario es bastante sencillo, y el código PHP analiza precisamente lo necesario para cargar la imagen y mostrarla.

Tanto el formulario como el código PHP se encuetran en el mismo documento. A continuación podrán ver y analizar el código, y luego trataré de explicar claramente su funcionamiento:

Código del documento


Funcionamiento del código
Al cargar el archivo con method="post", se genera el array $_FILES[], el cual almacena todos las propiedades del archivo, como su nombre, tamaño, tipo, nombre temporal, etc. Lo que hace PHP (línea 15) es verificar si existe un elemento de la array con la clave ['archivo'], y con ['size'] > 0 compruebo que el tamaño del archivo sea mayor que "0", asegurándome que realmente se haya cargado un archivo.

Si las comprobaciones anteriores han resultado exitosas, almaceno en $variables las propiedades del archivo (líneas 18-20).

¿Por qué crear una variable vacía (línea 16)? El trabajo de la variable $mostrar será almacenar la imagen una vez se haya cargado correctamente (líneas 26). Así, cuando esto suceda, mostraremos al usuario la imagen que ha cargado recientemente (líneas 38 y 39), sin necesidad de abrir el directorio donde se guarda el archivo.

Determino, además, un tamaño máximo para las imágenes (línea 17), de modo que no sobrepasen los 3 megabytes (300000 bytes).

Con la función GetImageSize() extraigo información del archivo cargado, como el tipo y el tamaño del mismo. Esta función devuelve la información en forma de array, la cual almaceno en la variable $tipoArchivo. El tercer elemento de este array, $tipoArchivo[2] (el índice de los array comienzan por el número 0), tiene que ver con el tipo de archivo de imagen: 1 corresponde al tipo GIF; 2 al tipo JPG; 3 al tipo PNG, y 4 al tipo SWF. En el código compruebo si el archivo cargado es un GIF, JPG o PNG (línea 22).

Tras comprobar que el tamaño del archivo no exceda el permitido (línea 23), trasladamos el archivo cargado a otra ubicación con la función move_uploaded_file() (línea 24). El primer argumento de la función es el nombre temporal del archivo, el segundo es la ruta de acceso que habíamos definido anteriormente (línea 14), además del nombre que tendrá el archivo en su ubicación final.

Si la función tiene éxito, presentamos un par de datos sobre el archivo cargado (línea 25), y almacenamos la ruta y el nombre del archivo en la variable $mostrar que habíamos inicializado sin contenido anteriormente. Esta variable mostrará en el navegador el archivo que se ha cargado (líneas 38 y 39).

Al hacer click en el botón
del segundo formulario (línea 36), desaparecerá el mensaje de confirmación y la imagen de la pantalla, quedando listo para subir otro archivo.

Como pueden apreciar, el formulario y el código es bien sencillo, pero completo a la vez, aunque es posible recurrir a mayores comprobaciones para cargar imágenes. De pronto, el código PHP cumple con su cometido. Más adelante iré añadiendo más opciones y probando otros códigos, los cuales seguiré compartiendo con ustedes.

No hay comentarios:

Publicar un comentario