BLOB-данные как атрибут src тега изображения? - PullRequest
1 голос
/ 06 января 2010

Я унаследовал сайт, который использует не идеальный способ обработки изображений, они были сохранены в БД в виде BLOB. Теги изображения состоят из

<img src='image.php?id=22' />

но изображения не отображаются. Когда я захожу на страницу image.php? Id = 22, данные BLOB просто выводятся на экран (все смешные символы), и изображение не отображается. Я не уверен, имеет ли это отношение к типу содержимого данных, которые отправляются в браузер? Мне сказали, что "раньше это работало нормально несколько недель назад".

У меня вопрос, возможно ли вообще отображать данные BLOB как атрибут src тега изображения?

РЕДАКТИРОВАТЬ: по запросу, вот содержимое image.php. Надеюсь, это пригодится.

<?
error_reporting(0);
include("../inc/connect.inc");
include("../inc/common.inc");
include("item.class");
$item = new Item($id);
echo $item->Picture;
?>

РЕДАКТИРОВАТЬ 2: Если я добавлю строку типа контента, страница просто распечатает путь к изображению: http://www.site.com/dir/image.php?id=49. Пробовал с несколькими типами контента, без разницы. Странно!

Ответы [ 2 ]

3 голосов
/ 06 января 2010

В базе данных должно быть поле типа контента, а также данные BLOB, если только данные BLOB не относятся к одному фиксированному типу (например, image/png), где вы можете жестко закодировать их в своем скрипте image.php. Вам нужно будет включить новый заголовок в Content-type: set.

header('Content-type: image/png');

Но вам нужно выяснить, какой тип изображения - я думаю, что пробный и ошибочный образы должны быть одно из следующих: image / jpeg, image / png или image / gif?

1 голос
/ 06 января 2010

Что ж, если вы свяжетесь непосредственно с изображением, то будут отправлены те же самые данные, нет различия между BLOB и просто данными, считанными веб-сервером и отправленными в браузер.

Итак, вы на правильном пути с идеей типа контента ... Что, по словам Firebug, является типом контента? Возможно, вы захотите опубликовать код для image.php.

редактирование:

Итак, поехали ... Просто измените ваш скрипт так, чтобы он выглядел так:

<?
header( 'Content-Type: image/png' );
error_reporting(0);
include("../inc/connect.inc");
include("../inc/common.inc");
include("item.class");
$item = new Item($id);
echo $item->Picture;
?>

Замена image/png на любой формат ваших изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...