我尝试从数据库(blob)读取图像,但我有问题因为我不知道mime类型的图像。我只有tinyblob。
我可以读取图像并将其保存回我的硬盘吗?
答案 0 :(得分:5)
最佳解决方案是在将图像插入blob字段的同时将mime-type存储在DB中。否则,您将需要在以下每个时间检索图像:
$image = $row['imageblob']; // $row = result row from DB query.
$finfo = new finfo(FILEINFO_MIME);
$mime_type = $finfo->buffer($image);
在繁忙的系统上这会很快变得昂贵,所以最好先确定ONCE,然后存储结果。
答案 1 :(得分:1)
为什么不一直将图像存储在硬盘上,并根据已知目录在数据库中存储相对链接?
答案 2 :(得分:1)
这是我用来从mysql数据库中获取徽标(blob)的一些代码
<a href="index.php"><img src="data:image/png;base64,<?php echo base64_encode($MyClass->getLogo())?>" alt="Logo" width="233" height="65" /></a>
getLogo()函数
public function getLogo()
{
if ($this->getId())
$query = "SELECT `logo` FROM Logos WHERE `logo_id` = '{$this->getId()}' LIMIT 1";
else
$query = "SELECT `logo` FROM Logos WHERE `logo_id` = '1' LIMIT 1";
$result = mysql_query($query);
if ($result)
$row = mysql_fetch_array($result);
else
return NULL;
return ($row['logo']);
}