来自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的列内容