HTTP 本身并不能真正让您流式传输图像,但您可以通过将数据从您的InputStream
到HttpServletResponse.getOutputStream()
.
你可以有一个映射到图像文件的servlet,比如......
<servlet>
<servlet-name>ImgServlet</servlet-name>
<servlet-class>ImgServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImgServlet</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
然后 servlet 类本身可以处理图像数据流,而无需将其保存到文件中。就像是...
class ImgServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String imageName = request.getRequestURI();
InputStream data = service.lookUpImage(imageName); //whatever
IOUtils.copy(data, response.getOutputStream()); // Apache Commons IO
response.setContentType("image/jpeg");
}
}
然后页面中可能只有常规图像标签。