一尘不染

PHP从MySQL显示图像BLOB [重复]

mysql

这个问题已经在这里有了答案

如何从MySQL数据库检索图像并显示在html标记中 (6个答案)

4年前关闭。

我试图显示存储在数据库的BLOB列中的图像;

我使用SELECT从数据库中获取数据,不对数据进行任何转换,并显示以下内容(从仅输出以下内容的脚本中显示):

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

请注意,chrome正在将内容大小显示为图像的正确大小以及正确的mime类型(image/jpeg)。在头文件和ive检查数据库中的blob正确之前,没有任何回声。<?php ?>标签之前或之后也没有尾随空格。

chrome / IE显示图像图标,但不显示图像本身。有任何想法吗?

编辑:像这样从数据库中获取图像:

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

var_dump($ image)给出:

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

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

阅读 265

收藏
2020-05-17

共1个答案

一尘不染

像这样尝试。

用于插入数据库

$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);

用于从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'] ).'"/>';

希望对您有帮助。

谢谢。

2020-05-17