尝试显示BLOB时显示损坏的图像图标

时间:2013-08-03 11:32:26

标签: php html mysql blob

好的,所以我的最终目标是以 blob 的形式显示存储在数据库( MySQL )中的图像(或博客类型样式中的多个)。现在它显示一个损坏的图像图标(enter image description here)。这是我到目前为止所尝试的:

<?php
    $link = mysql_connect('HOST','USER','PASS!') or die("Could not connect to database");
    $dbsel= mysql_select_db('DATABASE', $link) or die("Couldn't select database.");

    $result = mysql_query("SELECT * FROM bmblog");

    while($row = mysql_fetch_assoc($result))
    {

        echo "<img src='php/imgView.php?imgId=".$row['media']."' />";

        echo "<center>" . "<font color='white'>" . "<FONT FACE='timesnewromans'>" . nl2br(htmlspecialchars($row['msg']));

        echo "<br>";
        echo "<br>";
    };

?>

另外

echo "<img src='data:image/jpeg;base64," . base64_encode($row['media']) . '" />';

echo "<center>" . "<font color='white'>" . "<FONT FACE='timesnewromans'>" . nl2br(htmlspecialchars($row['msg']));

两者都显示相同的损坏图像图标。我确实注意到没有试图回显第二行( text )我确实在破碎的图像图标周围得到了一个完整的边界,这个图标大小与图像的大小差不多。但这与第一种方法不同。 我一直在寻找几个小时,并且发现了很多关于这个的帖子,但似乎没有一个对我有用或有意义,我对PHP很新,所以这可能是我想念的简单事情;无论哪种方式,提前感谢您的任何帮助,非常感谢!

1 个答案:

答案 0 :(得分:0)

可以解决问题的方法是在print/echo图像之前添加header("Content-Type: image/jpeg");

同样奇怪的是,你所包含的base64示例不起作用。当我查看提供的示例时,Also部分的第一行echo以双引号(“)打开并以单引号(')结尾。这可能会导致异常,为什么你不能' t正确测试base64。

必须是:

echo "<img src='data:image/jpeg;base64," . base64_encode($row['media']) . '" />";

您还可以添加字符集:data:image/jpeg;charset=utf-8;base64,

最后,我建议查看以下可能有帮助的示例

How to Base64 encode your images