我继承了一个使用不太理想的方式处理图像的网站,它们已作为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。尝试了几种内容类型,没有区别。奇怪!
答案 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
。