我试图显示存储在数据库的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Ñðbr‚
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³ ´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ��������'... (length=60766)
#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'] ).'"/>';
希望对您有帮助。
谢谢。
评论
您能否举个例子,您如何从Ajax调用中获取mysql查询的用户ID(“ SELECT * FROM products WHERE id = $ id”)?我真的会很感激。
–diank
2015年11月11日19:13
你是救生员
–新莫里纳
17年5月31日上午10:10
我想在html iframe上显示此回显。该怎么做?
–Sarah_Salar
19年11月29日在5:24
我很欣赏这个!
– Premlatha
19/12/13在2:58
你好!我真的很感激,但是如果图像是另一种格式怎么办?
–卡洛斯·蒙蒂尔(Carlos Montiel)
9月26日6:37
#2 楼
这就是我用来显示blob中的图像的方法:echo '<img src="data:image/jpeg;base64,'.base64_encode($image->load()) .'" />';
评论
是$ image一个php对象吗?
–Kebab程序员
15年11月29日在18:53
像魅力一样工作!谢谢.. @ProgrammingNewb,您可以将图像数据类型放入$ image中。它可以是$ row [“ photo”]中的PHP变量;
– Moxet Khan
16年5月24日在6:08
很高兴知道它对您有用,我采取了另一种方法,我在服务器中创建了一个文件夹,并将所有图像存储在那里,并且将图像的链接存储在mysql数据库中,然后每当我要显示图像时,都调用存储在我的数据库中的链接
–Kebab程序员
16年5月25日在13:18
#3 楼
由于必须在blob字段/列中存储各种类型的内容,因此我想像这样更新代码:echo "data: $mime" $result['$data']";
其中:
mime
可以是任何类型的图像,文本,Word文档,文本文档,PDF文档等。数据库中的内容数据类型为blob
。评论
您的语法正确吗?
–brown.cn
12月15日17:27
评论
请发布构成$ image的内容(例如查询等)@ user2732663您是否在下面尝试了我的答案?
尝试将$ image保存到二进制文件中并打开它,也许DB中的数据已损坏?
您是否尝试过在浏览器中查看源代码?有时,PHP错误或通知会使输出混乱。
您尚未向我们展示插入图像的代码-与检索图像的代码一样重要。