Отображение изображений в портлете Tomcat - PullRequest
1 голос
/ 08 июля 2010

В настоящее время у меня есть портлет с файловым менеджером и пустой панелью. Когда пользователь выбирает открыть файл изображения, я хотел бы отобразить изображение на панели.

Однако образ существует в / home / myUser / images /, а портлет существует в /home/server/tomcat/tomcat-6.0.18/webapps/mycompany. Он размещается там путем горячего развертывания портлета через Liferay. В основном, в коде я хочу иметь возможность генерировать некоторые HTML для отображения этого изображения. Тем не менее, я знаю, что не могу просто сказать

<img src='/home/myUser/images/test.jpg'/> 

из моего портлета. Итак, я подумал о том, чтобы скопировать его в каталог tomcat-6.0.18 / temp с помощью метода File.createTempFile. Я успешно скопировал туда файл, и он там. Тем не менее, когда я сейчас говорю

<img src='/home/server/tomcat/tomcat-6.0.18/temp/test.jpg'/> 

Я все еще не могу отобразить это! Примечание: приведенный выше текст взят из:

File tempImage = File.createTempFile("","");
FileReader in = new FileReader(myImageFile);
FileWriter out = new FileWriter(tempImage);
int c;

while ((c = in.read()) != -1)
    out.write(c);

in.close();
out.close();
String myHtmlString = "<img src='" + tempImage.getAbsolutePath() + "'/>";

Пожалуйста, подробно опишите, как я могу решить эту проблему!

Спасибо!

РЕДАКТИРОВАТЬ: Я сталкивался с некоторыми вещами о сервлете изображения? Есть идеи?

1 Ответ

0 голосов
/ 16 февраля 2011

Путь к изображению должен быть доступен через Интернет. Использование File#createTempFile сохранит изображение в недоступном для Интернета месте, например:

/var/cache/tomcat6/smiley.png

Попробуйте вместо этого:

String smiley = "smiley.png";
String smileyPath = getServletContext().getRealPath( smiley )

Теперь сохраните его в smileyPath. Это будет записать его в путь как /usr/share/tomcat6/webapps/<your-web-app>/smiley.png

Тогда в вашем HTML вы можете ссылаться на изображение как:

String html = "<img src='" + smiley + "'/>"
...