Portada » Lenguaje PHP » Cargar y Almacenar imagen en MySQL PHP [Actualizado]

Cargar y Almacenar imagen en MySQL PHP [Actualizado]

Cargar y Almacenar imagen en MySQL PHP. Cuando hablamos de subir imágenes al servidor se nos viene a la cabeza cargar la imagen en un directorio especificado y el nombre de la imagen almacenarlo en la base de datos.

¿Se puede subir una imagen sin almacenar en el servidor?

La respuesta es sí se puede hacer usando la base de datos MySQL. En algunos casos nuestro servidor está lleno y ya no podemos almacenar más imágenes, pero puede insertar un archivo de imagen en la base de datos sin subirlo en la carpeta. Este procedimiento nos ayuda a no llenar el servidor porque el contenido del archivo de imagen se almacena directamente en la base de datos en lugar del disco del servidor.

Cargar y Almacenar imagen en MySQL PHP

En este artículo, daremos solución a esta gran incógnita, de cómo almacenar el fichero de imagen en la base de datos MySQL y posteriormente poder recuperar la imagen de la base de datos.
No es tan complicado almacenar y recuperar imágenes de la base de datos utilizando PHP y MySQL. Aquí un ejemplo sencillo.

<img src='vista.php?id=4' alt='Img blob desde MySQL' width="600" />      

Sin embargo, podemos utilizar las ventajas de este potente gestor MySQL.

  • Requisitos para la configuración de las columnas para que podamos ambientarlo a almacenar imágenes.
  • Primeramente declarar el tipo de campo datos BLOB (objeto binario grande), ya que puede contener una gran cantidad de datos binarios.

Hay 4 tipos de BLOB disponibles: TINYBLOB, Blob, MEDIUMBLOB y LONGBLOB.Usaremos el tipo de datos LONGBLOB en la base de datos MySQL.
Nuestra tabla images_tabla.sql

CREATE TABLE IF NOT EXISTS `images_tabla` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `imagenes` longblob NOT NULL,
  `creado` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

Quizá le interese los siguientes artículos.

[pt_view id=»fc09d98ps2″]

Formulario de subida de imagen

Mostrando el formulario a utilizar y permitirá a los usuarios elegir el archivo de imagen que desea cargar al servidor de base de datos MySQL.
Index.php

      <form name="MiForm" id="MiForm" method="post" action="cargar.php" enctype="multipart/form-data">
        <h4 class="text-center">Seleccione imagen a cargar</h4>
        <div class="form-group">
          <label class="col-sm-2 control-label">Archivos</label>
          <div class="col-sm-8">
            <input type="file" class="form-control" id="image" name="image" multiple>
          </div>
          <button name="submit" class="btn btn-primary">Cargar Imagen</button>
        </div>
      </form>
Cargar y almacenar imagen en MySQL
Cargar y almacenar imagen en MySQL

Almacenar imagen en la base de datos (cargar. php)

El archivo de carga.php contiene las siguientes funcionalidades.

Fichero cargar.php

<?php
if(isset($_POST["submit"])){
    $revisar = getimagesize($_FILES["image"]["tmp_name"]);
    if($revisar !== false){
        $image = $_FILES['image']['tmp_name'];
        $imgContenido = addslashes(file_get_contents($image));
        
        //Credenciales Mysql
        $Host = 'localhost';
        $Username = 'root';
        $Password = 'root';
        $dbName = 'images_db';
        
        //Crear conexion con la abse de datos
        $db = new mysqli($Host, $Username, $Password, $dbName);
        
        // Cerciorar la conexion
        if($db->connect_error){
            die("Connection failed: " . $db->connect_error);
        }
        
        
        //Insertar imagen en la base de datos
        $insertar = $db->query("INSERT into images_tabla (imagenes, creado) VALUES ('$imgContenido', now())");
        // COndicional para verificar la subida del fichero
        if($insertar){
            echo "Archivo Subido Correctamente.";
        }else{
            echo "Ha fallado la subida, reintente nuevamente.";
        } 
        // Sie el usuario no selecciona ninguna imagen
    }else{
        echo "Por favor seleccione imagen a subir.";
    }
}
?>

Aquí, mostramos en el navegador la imagen almacenada en nuestra base de datos.

Fichero ver.php

<body bgcolor="#bed7c0">
<div class="main">
<h1>Mostrando imagen almacenada en MySQL</h1>
  <div class="panel panel-primary">
    <div class="panel-body">
<img src='vista.php?id=4' alt='Img blob desde MySQL' width="600" />      
      </div> 
    </div>
 </div>
</body>

Archivo Vista.php

Este archivo  tiene la función de  extraer imagen de la BD mediante el método GET. Sin embargo, si la imagen tiene errores mostrara un mensaje «Imagen no existe«.

<?php
if(!empty($_GET['id'])){
    //Credenciales de conexion
    $Host = 'localhost';
    $Username = 'root';
    $Password = 'root';
    $dbName = 'images_db';
    
    //Crear conexion mysql
    $db = new mysqli($Host, $Username, $Password, $dbName);
    
    //revisar conexion
    if($db->connect_error){
       die("Connection failed: " . $db->connect_error);
    }
    
    //Extraer imagen de la BD mediante GET
    $result = $db->query("SELECT imagenes FROM images_tabla WHERE id = {$_GET['id']}");
    
    if($result->num_rows > 0){
        $imgDatos = $result->fetch_assoc();
        
        //Mostrar Imagen
        header("Content-type: image/jpg"); 
        echo $imgDatos['imagenes']; 
    }else{
        echo 'Imagen no existe...';
    }
}
?>
Mostrando imagen almacenada en MySQL
Mostrando imagen almacenada en MySQL
Cargar y Almacenar imagen en MySQL PHP
Cargar y Almacenar imagen en MySQL PHP

Esperando que este pequeño articulo les ayude en abundancia y les dejo los ficheros para que descarguen.

Actualizado la carga de imagen a MySQL con PHP.- Ahora todo en un solo archivo compatible con PHP 8.

Cargar imagen a mysql actualizado
Cargar imagen a mysql actualizado

Descargar código fuente:

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 3

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad