Subir imagenes con PHP y class.upload.php

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:

  1. incluir class.upload.php a upload.php
  2. 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.
  3. Verificamos si la imagen se almacena exitosamente.
  4. 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.
  5. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Evilnapsis

Subscribe now to keep reading and get access to the full archive.

Continue reading