usando - Imagen de visualización de PHP BLOB de MySQL
mostrar imagenes con php desde mysql utilizando solo su ruta (3)
Como tengo que almacenar varios tipos de contenido en mi campo / columna blob, supongo que debo actualizar mi código de esta manera:
echo "data: $mime" $result[''$data'']";
donde: mimo puede ser una imagen de cualquier tipo, texto, documento de palabra, documento de texto, documento pdf, etc. Los datos son contenido de la columna de blob
Esta pregunta ya tiene una respuesta aquí:
Estoy intentando mostrar una imagen almacenada en la columna BLOB en la base de datos;
Recojo los datos de la base de datos con un SELECCIONAR No realizo transformaciones en los datos y los visualizo con lo siguiente (desde 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 y el tipo de mime correcto ( image/jpeg
). nada está resonando antes del encabezado y he comprobado que el blob en la base de datos es correcto. Tampoco hay espacios en blanco finales antes o después de las etiquetas <?php ?>
.
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 ($ image) da:
string ''ÿØÿà�JFIF��x�x��ÿá�ZExif��MM�*�����������J��������Q�������Q������tQ������t�����† ��±ÿÛ�C�
ÿÛ�CÿÀ�_"�ÿÄ�����������
ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚
%&''()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³ ´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ��������''... (length=60766)
Esto es lo que uso para mostrar imágenes de blob:
echo ''<img src="data:image/jpeg;base64,''.base64_encode($image->load()) .''" />'';
Prueba como este
Para insertar en DB
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$image = addslashes(file_get_contents($_FILES[''images''][''tmp_name'']));
//you keep your column name setting for insertion. I keep image type Blob.
$query = "INSERT INTO products (id,image) VALUES('''',''$image'')";
$qry = mysqli_query($db, $query);
Para acceder a la imagen desde Blob
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
echo ''<img src="data:image/jpeg;base64,''.base64_encode( $result[''image''] ).''"/>'';
Espero que te ayude.
Gracias.