Как обслуживать изображение, хранящееся на моем жестком диске, в сервлет?
Пример:
У меня есть изображение, сохраненное в пути 'Images/button.png'
, и я хочу служить в сервлете с URL-адресом file/button.png
.Вывод файла изображения из сервлета
26
A
ответ
19
- карту сервлет к
/file
URL-шаблон - читать файл с диска
- записать его
response.getOutputStream()
- установить заголовок
Content-Type
вimage/png
(если это только PNGs)
45
Настоящий код:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
ServletContext cntx= req.getServletContext();
// Get the absolute path of the image
String filename = cntx.getRealPath("Images/button.png");
// retrieve mimeType dynamically
String mime = cntx.getMimeType(filename);
if (mime == null) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
resp.setContentType(mime);
File file = new File(filename);
resp.setContentLength((int)file.length());
FileInputStream in = new FileInputStream(file);
OutputStream out = resp.getOutputStream();
// Copy the contents of the file to the output stream
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
out.close();
in.close();
}
0
Вот еще один очень простой способ.
File file = new File("imageman.png");
BufferedImage image = ImageIO.read(file);
ImageIO.write(image, "PNG", resp.getOutputStream());
+1
Это очень неэффективно, поскольку он излишне анализирует изображение в объект BufferedImage. Этот шаг не требуется, если вы не хотите манипулировать изображением (изменение размера, обрезка, преобразование и т. Д.). Самый быстрый способ - просто передать байты, не модифицированные из входного изображения, в выходной сигнал ответа. – BalusC
Смежные вопросы
- 1. Как сохранить вывод сервлета из другого сервлета?
- 2. Вывод HTML и изображений из сервлета
- 3. Как написать вывод непрерывного ряда из сервлета
- 4. Чтение внешнего файла из сервлета
- 5. вызов jsp-файла из сервлета
- 6. отображает вывод из файла мата
- 7. Вывод изображения из SQL BLOB
- 8. Вывод фонового изображения OpenCV из неподвижного изображения
- 9. Вывод значений изображения из файлов
- 10. Загрузка файла сервлета
- 11. Загрузка файла из jsp с помощью сервлета?
- 12. Отображение pdf-файла как встроенного из сервлета
- 13. Параметры параметров JSP/сервлета из файла свойств?
- 14. Чтение данных файла свойств из сервлета
- 15. динамического добавления сервлета из внешнего файла, Tomcat7
- 16. отображение файла из сервлета после загрузки
- 17. Доступность класса сервлета из внешнего файла web.xml
- 18. вывод изображения на экран?
- 19. Некорректный вывод из файла CSV
- 20. вывод из внешнего XML-файла
- 21. Perl Вывод из ошибок файла
- 22. Вызов сервлета из другого сервлета
- 23. Как включить вывод сервлета в файл jsp
- 24. Нужно получить вывод сервлета в html-файл
- 25. Вывод изображения из URL, возвращаемого API
- 26. Вызов службы() сервлета из другого сервлета
- 27. Вызов сервлета из другого тега формы сервлета
- 28. Использовать переменное значение сервлета из другого сервлета
- 29. Ошибка загрузки файла сервлета Java
- 30. Диалог загрузки файла сервлета Java не отображается
Знаете ли вы, что значение 'Content-Type' установлено в' image/png' или что вам нужно, как указано в следующем ответе? – Lion