BLOB数据作为图像标签的src属性?

时间:2010-01-06 14:45:50

标签: blob

我继承了一个使用不太理想的方式处理图像的网站,它们已作为BLOB存储在数据库中。图像标签由

组成
<img src='image.php?id=22' />

但没有显示图像。当我访问image.php?id = 22页面时,BLOB数据刚刚被丢弃到屏幕上(所有有趣的字符)并且没有显示图像。我不确定这是否与发送到浏览器的数据的内容类型有关?我被告知“直到几个星期前这种情况一直很好”。

我的问题是,是否可以将BLOB数据显示为图像标记的src属性?

编辑:根据要求,这是image.php的内容。希望这有一些用处。

<?
error_reporting(0);
include("../inc/connect.inc");
include("../inc/common.inc");
include("item.class");
$item = new Item($id);
echo $item->Picture;
?>

EDIT2:如果我添加了内容类型行,页面就会打印出图像的路径:http://www.site.com/dir/image.php?id=49。尝试了几种内容类型,没有区别。奇怪!

2 个答案:

答案 0 :(得分:3)

在数据库中,您应该拥有内容类型字段以及BLOB数据,除非BLOB数据是一个固定类型(例如,image/png),您可以在其中对其进行硬编码.php脚本。您需要在Content-type中添加一个新标头:set。

header('Content-type: image/png');

但是你必须找出图像类型是什么 - 我猜是试验和错误,它必须是image / jpeg,image / png或image / gif之一吗?

答案 1 :(得分:1)

好吧,如果您直接链接到图像,则会发回完全相同的数据,“BLOB”与网络服务器读取并发送到浏览器的数据之间没有区别。

所以,你对内容类型的想法走在正确的轨道上...... firebug说内容类型是什么?您可能希望发布image.php的代码。

编辑:

所以我们去...只需将脚本修改为:

<?
header( 'Content-Type: image/png' );
error_reporting(0);
include("../inc/connect.inc");
include("../inc/common.inc");
include("item.class");
$item = new Item($id);
echo $item->Picture;
?>

以图片的任何格式替换image/png