在php中更改标题内容类型

时间:2011-09-29 20:34:15

标签: php mysql lamp

我正在使用此代码

$query = mysql_query("SELECT Image, Col2, Col3 FROM table ");
$row = mysql_fetch_array($query);
$content = $row['Image'];
header('Content-type: image/jpg');
echo $content;  
echo $row['Col2'];
echo $row['Col3'];

问题是,一旦我'Content-type: image/jpg',其他Col2和Col3就不会出现。它们不是图像,只是文本行。如何同时显示图像和文字?

2 个答案:

答案 0 :(得分:5)

在将标题内容类型设置为image / jpg时,浏览器只需要图像二进制数据。使用此内容类型回显文本将破坏图像二进制文件而不显示文本。

如果不更改标题,您可以将图像编码为图像标记:

echo '<img src="data:image/jpg;base64,' . base64_encode($content) . '" />';
echo $row['Col2'];
echo $row['Col3'];

答案 1 :(得分:2)

你本身不能......

您正在发送内容类型的图像数据,这意味着您发送的所有数据都被解释为形成图像的数据字节。

您可以看到数据的唯一方法是使用header()函数发送对浏览器无用的abitrary数据。然后使用您使用的firebug或wathever浏览器控制台,查找NETWORK选项卡并打开图像请求并检查标题选项卡,您将在那里看到您的数据,但您无法向用户显示该数据。

header('mydata2: '.$row['Col2']);
header('mydata3: '.$row['Col3']);
header('Content-type: image/jpg');
echo $content;

另一个奇怪的方法是使用GD在图像上打印文本,但这可能不是你想要的。