Отображение изображения с путем, сохраненным в Базе данных в файле шаблона HTML с php - PullRequest
0 голосов
/ 09 сентября 2011

, поэтому моя проблема в том, что у меня есть изображения, хранящиеся в папке на моем сервере (не в веб-корне, в целях безопасности), и у меня есть путь к этим изображениям, хранящийся в базе данных.я использую php вместе с html_template_it груши для отображения моих страниц.Единственный успешный метод отображения изображений - это изменение заголовков с помощью

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

. Моя проблема заключается в том, что это нарушает шаблон, и пока я получаю отображение изображения, шаблон исчез.Кто-нибудь может посоветовать лучший способ обойти это?

Ответы [ 4 ]

1 голос
/ 09 сентября 2011

Правильный способ сделать это будет иметь что-то вроде:

<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-код, поскольку браузер будет интерпретировать ВСЕ, что ваш скрипт отправляет как изображение, и видеть поврежденный image - ни один из форматов изображений на планете не имеет <img .... в качестве первых нескольких байтов.

0 голосов
/ 09 сентября 2011

Лучший способ отобразить изображения:

$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

0 голосов
/ 09 сентября 2011

Вам нужен отдельный файл img.php с этим кодом:

header( "Content-type:image/type" );
echo file_get_contents( $imageFilePath );

затем поместите этот тег <img> туда, где вы хотите показать изображение:

<img src="img.php" />
0 голосов
/ 09 сентября 2011

если у вас есть путь к изображению, сохраненный в дБ, получите оттуда информацию и присвойте ее переменной

//some php code (getting image)
$image = 'ImagePath/ImageName.jpg';

для вывода изображения в формате html, просто напечатайте переменную в атрибуте src без каких-либо заголовков html-код

<img src=" <?=$image?>"/>
...