我用php写了一个控制器http://samplesite.com/application/getimage。它是一个简单的脚本,用一些参数响应GET。根据这些参数,我在数据库中找到一个图像(图像作为BLOB存储在那里),并返回如下:
header("Content-type: image/jpeg");
echo $image;
$image
为从数据库中获取的图像的BLOB。当我打开这个URL http://samplesite.com/application/getimage/?id=200时,我的web浏览器显示了一个图像。
现在我想在另一个php脚本的表中显示这个图像。我想用
echo "<img src="http://mysite.com/application/getimage/?id=200" ...some params here... />";
但这种方法行不通。它不显示图像或产生其他问题。
我应该选择什么方法来完成这个工作?我是新的php通常与Java EE工作。非常感谢。
编辑:当然,在echo中应该有"and not only"。但是我在这里写的这个方法很好。问题是语法,我有一个额外的)。
将PHP文件作为图像传递(不推荐)
你的问题是你没有转义语音标记,替换:
echo "<img src="http://mysite.com/application/getimage/?id=200" ...some params here... />";
:
echo "<img src='http://mysite.com/application/getimage/?id=200' ...some params here... />";
或:
echo "<img src='"http://mysite.com/application/getimage/?id=200'" ...some params here... />";
但是,有一个更好的方法:
正确使用图像blob
您走在正确的轨道上——您可以使用图像BLOB而不是文件来将图像内联,但是还有更多的工作要做。首先,你需要base64_encode
的blob之前,你通过它。当你传递文本时,你应该省略标题,而不是图像:
echo base64_encode($image);
接下来,您需要像这样设置图像标记,声明您正在使用数据,mime类型,最后包括RFC2557声明的getimage
脚本的输出:
<img src="data:image/jpeg;base64,<?php include('http://mysite.com/application/getimage/?id=200'); ?>"/>
应该可以解决这个问题。