所以我的问题是我将图像存储到我服务器上的某个位置(出于安全目的而不是web根目录),并且我将这些图像的路径存储在数据库中。我使用php和pear的html_template_it来显示我的页面。显示图像的唯一成功方法是使用
修改标题header("Content-type:image/type")
header("Content-Disposition:inline")
echo "<img src=readfile($image) />";
我的问题是这会破坏模板,当我得到图像显示时,模板就消失了。任何人都可以建议绕过这个最好的方法吗?
答案 0 :(得分:1)
这样做的正确方法是:
<img src="image.php?imageID=XYZ" />
模板中的,其中XYZ是数据库中图像的主键。然后你就有了image.php脚本:
<?php
$id = $_GET['imageID'];
$sql = "SELECT path FROM images WHERE id='" . mysql_real_escape_string($id) . "'";
... run query, fetch path, etc...
header('Content-type: image/whatever');
readfile($path);
如果您在代码段中输出image/whatever
内容类型,那么您无法将图像包装在某些HTML中,因为浏览器会将您的脚本发送的所有内容解释为图像,并查看图像损坏 - 地球上的图像格式没有<img ....
作为前几个字节。
答案 1 :(得分:0)
如果你有图像路径存储在db中,从那里获取信息并将其分配给变量
//some php code (getting image)
$image = 'ImagePath/ImageName.jpg';
在html中输出图像只是在src属性中打印变量而没有任何标题 HTML代码
<img src=" <?=$image?>"/>
答案 2 :(得分:0)
您需要有一个单独的img.php
文件,其中包含以下代码:
header( "Content-type:image/type" );
echo file_get_contents( $imageFilePath );
然后将此<img>
标记放在您要显示图片的位置:
<img src="img.php" />
答案 3 :(得分:0)
显示图像的最佳方式如下:
$query = "SELECT imagecolumnname FROM tablename";
$result = msql_query($result); if(mysql_num_rows($result) > 0) {
while($row = mysql_fetch_row($result))
{
$image_path = $row["image_path"];
}
}
$abs_path = $_SERVER["DOCUMENT_ROOT"]."/path_to_your_app/".$image_path;
<img src="<?php echo $abs_path; ?>" alt="" title="" />
我希望这会有所帮助。
问候J