来自MySQL的PHP​​显示图像BLOB

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

我使用SELECT从数据库中获取数据,不对数据进行任何转换,并使用下面的代码(来自一个脚本,其输出如下)显示:

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

请注意,Chrome会将内容大小显示为正确的图像大小以及正确的MIME类型( image/jpeg )。 没有什么是在头和echo检查数据库中的BLOB是正确的。 在<?php ?>标记之前或之后也没有尾随的空格。

铬/ 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) 

像这样尝试。

用于插入数据库

 $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'] ).'"/>'; 

希望它会帮助你。

谢谢。

这是我用来显示blob的图像:

 echo '<img src="data:image/jpeg;base64,'.base64_encode($image->load()) .'" />'; 

由于我必须在我的Blob字段/列中存储varius类型的内容,所以假设像这样更新我的代码:

 echo "data: $mime" $result['$data']"; 

其中:MIME可以是任何形式的图像,文本,文字文档,文本文档,pdf文档等。数据是blob的列内容