Загрузка изображения и отображение в JSP - PullRequest
2 голосов
/ 18 декабря 2011

Я изучил и успешно реализовал, как загружать изображения на серверный диск с сервлетом из Здесь , и теперь пытаюсь показать изображение на другом jsp userProfile.jsp с помощью следующего кода:

<img src="<jsp:include page='WEB-INF/jspf/profileImage.jspf' />" height="175" width="175" /> 

и код profileImage.jspf выглядит следующим образом:

OutputStream o = response.getOutputStream();
InputStream is = new FileInputStream(new File("../files/backPetals.jpg"));
byte[] buf = new byte[32 * 1024]; 
int nRead = 0;
while( (nRead=is.read(buf)) != -1 ) {
    o.write(buf, 0, nRead);
}
o.flush();
o.close();
return; 

, но это не работает. Любые другие способы отображения изображения с диска на jsp вместе с другими материалами на странице?Я сохранил свои изображения в каталогах /files в корневой папке приложения.

Ответы [ 2 ]

3 голосов
/ 18 декабря 2011

В подходе есть несколько серьезных ошибок:

  1. Вы не должны хранить загруженный файл в корневой папке приложения. Все они будут потеряны при каждом повторном развертывании WAR (просто потому, что эти файлы не содержатся в исходном файле WAR.

  2. <img src> не должен содержать необработанное содержимое изображения, но он должен содержать URL-адрес, который возвращает содержимое файла. Э.Г.

    <img src="profilePictures/${user.profilePictureFilename}" />
    
  3. Вы не должны использовать JSP для записи двоичных данных в ответ. Используйте вместо этого сервлет. Или, если вы можете, просто добавьте путь к загруженным файлам в качестве другого контекста веб-приложения.

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

1 голос
/ 18 декабря 2011

Синтаксис тега img: <img src="url_of_the_image" .../>.Что вы делаете: <img src="contents_of_the_image_file" .../>.

Вам необходимо сгенерировать URL-адрес сервлета, и этот сервлет должен открыть файл изображения и отправить его содержимое в поток вывода.Вы не можете загрузить файл HTML и изображение в одном запросе HTTP.

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