2013-06-07 4 views
1

У меня есть контроллер http://samplesite.com/application/getimage, написанный на php. Это простой скрипт, который отвечает на GET с некоторыми параметрами. По этим параметрам я найти изображение в базе данных (изображение хранится там как BLOB), и я возвращаю его следующим образом:PHP: Получение изображения из другого PHP-скрипта

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

$image является BLOB изображения, полученной из базы данных. Когда я открываю этот URL-адрес http://samplesite.com/application/getimage/?id=200, на моем веб-сайте отображается изображение.

Теперь я хочу отобразить это изображение внутри таблицы в другом сценарии php. Я хочу, чтобы выполнить его как

echo "<img src="http://mysite.com/application/getimage/?id=200" ...some params here... />";

но этот подход не работает. Он не отображает изображение или создает другие проблемы.

Какой подход я должен выбрать для выполнения этой работы? Я новичок в php, обычно работаю с Java EE. Огромное спасибо.

EDIT: Конечно, внутри эха должно быть не только ". Но этот подход, который я написал здесь, отлично работает. Проблема была в синтаксисе, у меня был один дополнительный).

+0

с использованием возврата, а не эха, может быть первым шагом. – sjmarshy

+2

Вам нужно избегать '' 'речевых меток в пределах строки, которую вы эхом, например,« echo » Pudge601

+1

@sjmarshy: Or... not? That wouldn't work. –

ответ

3

Передача PHP файл AS изображения (не рекомендуется)

Ваш вопрос является то, что вы не избежали речи знаки, заменить:

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); 

Далее необходимо настроить тег изображения, как это, заявив, что вы используете данные, тип пантомимы и, наконец, в том числе выход вашего getimage сценария, как было заявлено RFC2557:

<img src="data:image/jpeg;base64,<?php include('http://mysite.com/application/getimage/?id=200'); ?>"/> 

Это должно решить проблему.

+0

Не смотрите ли вы на преимущества последнего решения по сравнению с тем, что он сейчас делает. На самом деле, это похоже на довольно плохую идею в большинстве ситуаций – Pudge601

+0

проблема заключается в том, что я пытаюсь сделать это, что/getimage ничего не отображает. Он должен отображать изображение. Reshi

+1

−1. There is absolutely *no* good reason to use the not well supported 'data:' URI scheme here. If the application prints raw data to stdout, you can simply use the application URI as value of the 'src' attribute. Calling the simpler, more compatible approach “not recommended” is *utter nonsense*. – PointedEars

Смежные вопросы