Вывод файла изображения из сервлета

Как обслуживать образ, хранящийся на моем жестком диске, в сервлет?
Например:
У меня есть изображение, сохраненное в пути 'Images/button.png' и я хочу служить в сервлете с file/button.png URL file/button.png .

  • отобразить сервлет в /file url- /file
  • читать файл с диска
  • напишите его в response.getOutputStream()
  • установите заголовок Content-Type в image/png (если это только png)

Вот рабочий код:

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

Вот еще один очень простой способ.

 File file = new File("imageman.png"); BufferedImage image = ImageIO.read(file); ImageIO.write(image, "PNG", resp.getOutputStream()); 
  • Получение запроса полезной нагрузки из запроса POST в Java-сервлете
  • Как обнаружить закрытие браузера?
  • request.getQueryString (), похоже, нуждается в некоторой кодировке
  • Получение IP-адреса клиента
  • java.lang.LinkageError: javax.servlet.jsp.JspApplicationContext.getExpressionFactory
  • java.lang.IllegalArgumentException: Неверный в отображении сервлета
  • Как отправить массив параметров запроса на сервлет с помощью jQuery $ .ajax?
  • Получить параметр, отправленный через jquery ajax в Java Servlet
  • Как получить информацию о клиенте, такую ​​как ОС и браузер
  • Как передавать данные из JSP в сервлет при отправке HTML-формы
  • Ошибка CreateProcess = 206. Имя файла или расширение слишком велико при запуске метода main ()
  • Давайте будем гением компьютера.