好的,所以我的最终目标是以 blob 的形式显示存储在数据库( MySQL )中的图像(或博客类型样式中的多个)。现在它显示一个损坏的图像图标()。这是我到目前为止所尝试的:
<?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很新,所以这可能是我想念的简单事情;无论哪种方式,提前感谢您的任何帮助,非常感谢!
答案 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,
最后,我建议查看以下可能有帮助的示例