Subir imágenes mediante PHP

Subir imágenes mediante PHP

Fecha: 10-Ene-2010 | Autor: Marcelo.
Guardado en: Códigos, Tutoriales PHP

Un lector (cesarin) me había sugerido hace algún tiempo, que tratara el tema de “Cómo subir imágenes al servidor y guardar el nombre en una base de datos“, y para ello voy a redactar este breve tutorial sobre Cómo subir imágenes en PHP y guardar el nombre en una BBDD.

Para este mini-manual necesitamos poseer nociones básicas de PHP así como conectar a una BBDD e interactuar con ella.

Para crear nuestro uploader en PHP, necesitaremos 3 cosas:

  • 1 archivo HTML que contenga el formulario que solicitará la imagen.
  • 1 archivo PHP que procesará la subida de la imagen.
  • La base de datos que guardará el nombre de las imágenes que subamos.

El archivo HTML debe contener un formulario con 2 campos un input type=”file” que será el selector de la imagen y un input type=”submit” que será el botón que enviará el formulario. Además debemos tener en cuenta que al enviar imágenes en un formulario debemos agregar enctype=”multipart/form-data” dentro de la tag <form>

Código del archivo formulario.html:

1
2
3
4
5
6
<form action="procesar.php" enctype="multipart/form-data" method="post">
    <label for="imagen">Imagen:</label>
    <input id="imagen" name="imagen" size="30" type="file" />
 
    <input name="submit" type="submit" value="Guardar" />
</form>

El PHP que lo procese hará 3 cosas:

  1. Recibir los datos de la imagen mediante $_FILES.
  2. Guardará la imagen en la ruta que le indiquemos (el directorio debe tener permisos de escritura [CHMOD 0777]).
  3. Guardar el nombre de la imagen en la BBDD que definamos.

Código para subir la imagen (primera parte de procesar.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 
    // Datos de conexión a configurar
    $user = "usuario_bbdd";
    $pass = "clave_bbdd";
    $bbdd = "nombre_bbdd";
 
    // Ruta donde se guardarán las imágenes
    $directorio = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
 
    // Conecto a la BBDD
    $dbh = mysql_connect("localhost", $user, $pass);
    $db = mysql_select_db($bbdd);
 
    // Recibo los datos de la imagen
    $nombre = $_FILES['imagen']['name'];
    $tipo = $_FILES['imagen']['type'];
    $tamano = $_FILES['imagen']['size'];
 
    // Muevo la imagen desde su ubicación
    // temporal al directorio definitivo
    move_uploaded_file($_FILES['imagen']['tmp_name'],$directorio.$nombre);
 
?>

Ahí ya deberíamos tener nuestra imagen subida en el sitio indicado, ahora debemos guardar la variable $nombre en nuestra base de datos previamente creada. Para este ejemplo usaremos una bbdd que simplemente guardará el valor del nombre de la imagen y un id autonumerico » ID [INT(9)] | nombre_archivo – [VARCHAR(255)].

De modo que agregamos en procesar.php las siguientes líneas:

1
2
3
4
5
6
    // Guardamos en la BBDD
    $sql = "INSERT into TABLAIMAGENES (nombre_archivo) values ('$nombre')";
    $resultado = mysql_query($sql);
 
    // Por si queremos la ID asignada a la imagen
    $id = mysql_insert_id();

Con esto debería bastar para poder guardar nuestras imágenes en una carpeta que decidamos y además guardar la referencia al nombre de archivo en la base de datos.
Luego para mostrar las imágenes simplemente las llamaras por el nombre en la carpeta /uploads/ o cualquier otra que hayas definido en tu caso.

Si tienes cualquier duda, o hay algo que no has entendido, puedes dejar tu comentario consultando, prometo intentar ayudarte ;)

Si te gustó este post, compártelo:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • Live
  • del.icio.us
  • BarraPunto
  • Technorati
  • Bitacoras.com
Me gusta! A 5 lectores les ha gustado esta entrada.
Loading ... Loading ...

Etiquetado como: , ,

Gravatar

Marcelo Ferreiro


Desarrollador web: me especializo en Diseño web, Maquetación xHTML & CSS y Programación PHP & MySQL, e intento aprender un poco más cada día.

2 comentarios, participa!

  1. Luis Toscano

    19. Feb, 2010

    actualizemos el $HTTP_POST_FILES por $_FILES ya que el anterior ya ha sido descontinuado y puede ser un fail en tu desarrollo saludos

  2. Marcelo

    19. Feb, 2010

    Gracias Luis, tienes toda la razón, gracias por el comentario, ya procedo a corregirlo en el código del post ;)

    Saludos!

Deja tu opinión