使用php显示存储在数据库中的图像(tinyblob)

时间:2011-11-07 20:12:25

标签: php mysql

我尝试从数据库(blob)读取图像,但我有问题因为我不知道mime类型的图像。我只有tinyblob。

我可以读取图像并将其保存回我的硬盘吗?

3 个答案:

答案 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,然后存储结果。

相关PHP docs here

答案 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']);
    }