使用php在html模板文件中显示存储在Database中的路径的图像

时间:2011-09-09 14:21:46

标签: php mysql pear

所以我的问题是我将图像存储到我服务器上的某个位置(出于安全目的而不是web根目录),并且我将这些图像的路径存储在数据库中。我使用php和pear的html_template_it来显示我的页面。显示图像的唯一成功方法是使用

修改标题
header("Content-type:image/type")
header("Content-Disposition:inline")
echo "<img src=readfile($image) />";

我的问题是这会破坏模板,当我得到图像显示时,模板就消失了。任何人都可以建议绕过这个最好的方法吗?

4 个答案:

答案 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