【问题标题】:Doesn't show blob image in php from mysql db不显示来自 mysql db 的 php 中的 blob 图像
【发布时间】:2014-08-28 18:55:42
【问题描述】:

有人可以帮我处理这段代码吗?问题是它没有显示图像而是这个奇怪的东西:OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀx !ÿÄ¢ }!1AQa"q2‘¡#B±ÁRÑð$3br‚%&'()*456789:CDEFGHIJSTUVW

这是我的代码:

 <?php
//mysql connect database
mysql_connect('localhost','root','password') or die(mysql_error());
mysql_select_db('database') or die(mysql_error());
$res=mysql_query('select * from img');
while($row=mysql_fetch_array($res))
{
echo "<div id='image'>";
echo "<p/>";?> <img src="<?php echo $row['image'];?>" height='300px' width='468px'>";<?php
echo "<p/>"; echo $row['name'];
echo "</div>"; 
}
?>

【问题讨论】:

标签: php mysql image blob


【解决方案1】:

&lt;img&gt; 需要一个指向图像文件所在位置的 URL。您正在尝试将图像的原始二进制垃圾转储到该图像标记中。该垃圾自然会包含"&gt; 字符,并“关闭”您的img 标签,让其余垃圾被视为纯文本。

你要么必须通过单独的脚本来提供你的图像,例如

html:

<img src="pic.php?id=foo">

php:

header('Content-type: image/jpeg');
echo get_blob_from_database($_GET['id']);

或者将图片正确嵌入到html中:

<img src="data:image/jpg;base64,<?php echo base64_encode($row['image']); ?>">

这些都不是特别好的解决方案。将图像直接存储在数据库中几乎不是一个好主意。

【讨论】:

    【解决方案2】:

    最好将图像保存在文件夹中,而不是以 blob 格式保存

    您可以将文件名保存在数据库表中,并将图像保存在文件夹中

    调用文件名的时候,可以和src from结合起来获取内容

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      相关资源
      最近更新 更多