Subir imagenes a un servidor o a una aplicacion aveces resulta necesario a la hora de desarrollar una aplicacion, en PHP existen muchas maneras y librerias para subir imagenes, pero quizas la que mas he utilizado y recomiendo es class.upload.php de vero.net.
Basicamente se trata de una clase PHP que ademas de ayudarnos a subir imagenes a un servidor tambien nos permite recortar y hacer ciertas tareas de “modificacion a las imagenes”.
Estas empezando a crear tus Sistemas, te Invito a mi Guia Maestra de Desarrollo Web con PHP y MySQL. Donde voy a explicar todo lo necesario tu proximo proyecto.
La clase class.upload.php se puede descargar desde http://www.verot.net/php_class_upload.htm
Formulario para subir Imagenes
Recordemos que lo primero que debemos es configurar un formulario para que acepte el envio de imagenes, ejemplo:
<form enctype="multipart/form-data" method="post" action="upload.php"> <input name="image" required type="file" /> <br/> <input type="submit" value="Upload"/> </form>
En los formularios para subir archivos o imagenes siempre hay que especificar el atributo enctype=”multipart/form-data” para enviarle archivos al servidor.
Codigo de procesamiento
Una vez que tenemos el formulario ahora vamos a crear el archivo upload.php, el cual sera el que procesara la subida de imagenes.
Archivo: upload.php
<?php
/**
* Proceso de carga de imágenes utilizando la librería class.upload.php
*/
// Se incluye la librería necesaria para el procesamiento de archivos
include "class.upload.php";
// Se inicializa el objeto con el archivo proveniente del formulario (input name="image")
$image = new Upload($_FILES["image"]);
// 1. Verificamos si el archivo se ha subido correctamente al servidor temporal
if ($image->uploaded) {
// 2. Definimos el destino y ejecutamos el proceso de guardado
// Aquí puedes agregar parámetros de redimensionamiento o cambio de formato si lo deseas
$image->Process("uploads/");
// 3. Comprobamos si la librería pudo mover y procesar el archivo en el destino final
if ($image->processed) {
echo "Upload Success";
} else {
// En caso de error en el procesamiento (ej. permisos de carpeta)
echo "Error: " . $image->error;
}
} else {
// En caso de que el archivo no haya llegado al servidor
echo "Error al subir el archivo original.";
}
?>Lo que hacemos en el archivo upload.php es:
- incluir class.upload.php a upload.php
- Crear una instancia de la clase Upload y como parametro le insertamos la variable $_FILES con el nombre del campo de archivo del formulario, esto almacenara la imagen a la memoria usada por la clase.
- Verificamos si la imagen se almacena exitosamente.
- Procesamos la imagen, en caso de que queramos recortar o agregar filtros, si no se procesa la imagen original y como paramereo de la funcion Process incluimos la carpeta donde se guardara la imagen procesada.
- Verificamos si la imagen se proceso correctamente e imprimimos Upload Success, de lo contrario imprimimos Error y el error generado.
Recomendaciones adicionales:
Seguridad: Asegúrate de validar que el usuario esté autenticado antes de permitir la subida.
Permisos: Verifica que la carpeta
uploads/tenga permisos de escritura (chmod 777 o 755 según tu servidor).Validaciones de archivo: Con esta librería puedes forzar tipos de archivo antes del
$image->Process(), por ejemplo:$image->allowed = array('image/*');para aceptar solo imágenes.$image->file_new_name_body = 'foto_' . uniqid();para evitar nombres duplicados.
Notas finales
Para que todo esto funcione se debe estar trabajando en un entorno de servidor, ya sea local usando XAMPP o utilizando un servicio de hosting web que soporte PHP.
Ejemplo util
A continuacion dejo el siguiente ejemplo util que incluye:
- Formulario
- Archivo upload.php
- Archivo class.upload.php
Descargar: upload1_example
Despedida
Espero este ejemplo les ayude, espero sus comentarios, mas adelante seguiremos hablando sobre esta magnifica libreria.