Extracción de datos de imagen BLOB de MySQL en PHP


0 Answers

Si no tiene ningún motivo en particular para almacenar datos de imagen en su base de datos, le recomiendo encarecidamente que solo lo haga de la manera habitual.

Esto se debe a que su motor de base de datos tendrá un impacto significativo en el rendimiento ya que recibirá y colocará más datos de los necesarios.

Además, los campos BLOB en las tablas MySQL son significativamente más grandes que otras tablas en términos de tamaño y su rendimiento es más lento en la mayoría de los escenarios.

Solo imaginando la sobrecarga en su servidor una vez que implemente esto me da escalofríos. ;)

Supongo que todo se reduce a la escalabilidad . Una vez que su base de datos se llena, su servidor se vuelve menos receptivo y eventualmente se convertirá en un verdadero cerdo. Sus próximas opciones serían aumentar la memoria RAM del servidor o revisar su código para acomodar la carga más grande.

Solo mis 2 centavos, ¡espero que esto ayude!

¡Buena suerte!

Question

Estaba leyendo algunos tutoriales sobre cómo cargar mi imagen en el DB como un binario opuesto a ponerlos en el servidor, así que lo hice funcionar así:

PHP:

$image = chunk_split(base64_encode(file_get_contents($tmpfile)));
    mysql_query("INSERT INTO images (`img_location`, `caption`, `user`, `genre`, `when`) VALUES ('$image', '$caption', '$id', '$genre', '$when')");

Mi problema es cómo sacarlo ahora de la base de datos, he leído varias maneras de hacerlo, intenté todos, no puedo entenderlo, no estoy obteniendo un error de MySQL, así es como lo estoy intentando :

$get_pics = mysql_query("SELECT * FROM images WHERE user='$id' ");
while($get_pics2 = mysql_fetch_array($get_pics))
{
$sixfour_enc = base64_decode($get_pics2['img_location']);

$new .= "<img src=\"".$sixfour_enc."\" >";
}

Esto funciona ... más o menos, lo que está sucediendo es que está imprimiendo binario en bruto en la etiqueta IMG.

¿Cómo hago esto para compilar a una imagen readible otra vez? Además, ¿es estúpido almacenar las imágenes en la base de datos? ¿Debo hacer lo que suelo hacer y almacenarlos en el servidor?

Gracias, Mike




Related