Imagen de visualización PHP BLOB de MySQL [duplicado]

Resuelto user2732663 asked hace 54 años • 2 respuestas

Estoy intentando mostrar una imagen almacenada en la columna BLOB de la base de datos;

Obtengo los datos de la base de datos con SELECT, no realizo transformaciones en los datos y los muestro con lo siguiente (de un script cuyo único resultado es el siguiente):

header("Content-Type: image/jpeg");
echo $image;

Tenga en cuenta que Chrome muestra el tamaño del contenido como el tamaño correcto para la imagen, así como el tipo MIME correcto ( image/jpeg). no suena nada antes del encabezado y he comprobado que el blob en la base de datos es correcto. Tampoco hay espacios en blanco al final antes o después de las <?php ?>etiquetas.

Chrome/IE muestra un icono de imagen pero no la imagen en sí. ¿algunas ideas?

EDITAR: la imagen se obtiene de la base de datos como tal:

$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$row = $sth->fetch();
$image = $row['image'];

var_dump($imagen) da:

string 'ÿØÿà�JFIF��x�x��ÿá�ZExif��MM�*�����������J��������Q�������Q������tQ������t�����† ��±ÿÛ�C�       

ÿÛ�CÿÀ�_"�ÿÄ����������� 
ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚ 
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³    ´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ��������'... (length=60766)
user2732663 avatar Jan 01 '70 08:01 user2732663
Aceptado

Pruébalo así.

Para insertar en DB

$db = new mysqli("localhost", "root", "", "DbName");
$image = file_get_contents($_FILES['images']['tmp_name']);
$query = "INSERT INTO products (image) VALUES(?)";
$stmt = $db->prepare($query);
$stmt->bind_param('s', $image);
$stmt->execute();

Para acceder a la imagen desde Blob

$db = new mysqli("localhost", "root", "", "DbName");
$sql = "SELECT * FROM products WHERE id = ?";
$stmt = $db->prepare($sql);
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_array();
echo '<img src="data:image/jpeg;base64,'.base64_encode($row['image']).'"/>';
Muhammad Rizwan Kaim Khani avatar Dec 13 '2013 10:12 Muhammad Rizwan Kaim Khani

Esto es lo que uso para mostrar imágenes de blob:

echo '<img src="data:image/jpeg;base64,'.base64_encode($image->load()) .'" />';
Arian Faurtosh avatar Dec 13 '2013 00:12 Arian Faurtosh