¿Puedo almacenar imágenes en MySQL [duplicado]

Resuelto afaolek asked hace 54 años • 4 respuestas

Posibles duplicados:
Imágenes en MySQL
Almacenamiento de imágenes en MySQL

Estoy intentando desarrollar un sitio web donde los usuarios cargan sus imágenes como parte del registro. Quiero que para cada imagen haya un pulgar creado con PHP (lo cual no es tan difícil). Quiero guardar los pulgares (ya que son muy pequeños) en la base de datos y uso MySQL. (No quiero guardar las miniaturas como archivos físicos en el disco).
¿MySQL permite guardar y recuperar datos de imágenes y cómo lo hago? Si no admite datos de imágenes, ¿existe alguna base de datos gratuita que lo admita? Estaré feliz si se puede proporcionar un enlace.
Gracias.

afaolek avatar Jan 01 '70 08:01 afaolek
Aceptado

Sí, puede almacenar imágenes en la base de datos, pero en mi opinión no es aconsejable y no es una práctica generalizada.

Una práctica general es almacenar imágenes en directorios del sistema de archivos y almacenar referencias a las imágenes en la base de datos. por ejemplo, la ruta a la imagen, el nombre de la imagen, etc. O, alternativamente, puede incluso almacenar imágenes en una red de entrega de contenido (CDN) o en numerosos hosts en una gran extensión de territorio físico, y almacenar referencias para acceder a esos recursos en la base de datos. .

Las imágenes pueden llegar a ser bastante grandes, superiores a 1 MB. Y, por lo tanto, almacenar imágenes en una base de datos puede generar una carga innecesaria en su base de datos y en la red entre su base de datos y su servidor web si están en diferentes hosts.

He trabajado en startups, medianas empresas y grandes empresas de tecnología con más de 400.000 empleados. En mis 13 años de experiencia profesional, nunca he visto a nadie almacenar imágenes en una base de datos. Digo esto para respaldar la afirmación de que es una práctica poco común.

Steve Nguyen avatar Jun 24 '2011 18:06 Steve Nguyen

Deberá guardarlo como un blob; el tipo de datos LONGBLOB en mysql funcionará.

Ex:

CREATE TABLE `test`.`pic` (
    `idpic` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT
        PRIMARY KEY,
    `caption` VARCHAR(45) NOT NULL,
    `img` LONGBLOB NOT NULL
)

Como han dicho otros, es una mala práctica pero se puede hacer. Sin embargo, no estoy seguro de si este código se ampliaría bien.

 avatar Jun 24 '2011 18:06

Puede almacenar imágenes en MySQL como blobs. Sin embargo, esto es problemático por un par de razones:

  • Las imágenes pueden ser más difíciles de manipular: primero debes recuperarlas de la base de datos antes de poder realizar operaciones masivas.
  • Excepto en casos muy raros en los que toda la base de datos se almacena en la RAM, las bases de datos MySQL finalmente se almacenan en el disco. Esto significa que las imágenes de su base de datos se convierten en blobs, se insertan en una base de datos y luego se almacenan en el disco; puede ahorrar muchos gastos generales simplemente almacenándolos en el disco.

En su lugar, considere actualizar su tabla para agregar un campo image_path. Por ejemplo:

ALTER TABLE `your_table`
ADD COLUMN `image_path` varchar(1024)

Luego almacene sus imágenes en el disco y actualice la tabla con la ruta de la imagen. Cuando necesite utilizar las imágenes, recupérelas del disco utilizando la ruta especificada.

Un efecto secundario ventajoso de este enfoque es que las imágenes no necesariamente se almacenan en el disco; También podrías almacenar fácilmente una URL en lugar de una ruta de imagen y recuperar imágenes desde cualquier ubicación conectada a Internet.

George Cummins avatar Jun 24 '2011 18:06 George Cummins

Deberá almacenar la imagen en la base de datos como BLOB.

querrás crear una columna llamada FOTO en tu tabla y configurarla como mediumblob.

Entonces querrás obtenerlo del formulario así:

$data = file_get_contents($_FILES['photo']['tmp_name']);

y luego establezca la columna en el valor en $data.

Por supuesto, esta es una mala práctica y probablemente desee almacenar el archivo en el sistema con un nombre que corresponda a la cuenta del usuario.

bsimic avatar Jun 24 '2011 18:06 bsimic