我想显示位于本地驱动器中的图像。我正在使用sun java app server 8.例如,如果我动态生成一个文件abc.jpg并将其存储在c:\ abc.jpg中,那我怎么能在jsp或servlets中使用它?如何在jsp或servlet页面中显示它? 我知道在编码中给出路径c:\ abc.jpg以显示图像不起作用,因为它不在网络服务器中..
答案 0 :(得分:4)
基本上只需创建一个Servlet
,在InputStream
的帮助下获取FileInputStream
,并将其OutputStream
写入HttpServletResponse
至少具有content-type
的正确响应标头集。最后在src
元素的<img>
属性中调用此servlet以及文件标识符作为请求参数或pathinfo。 E.g:
File file = new File("c:/abc.jpg");
response.setContentType(getServletContext().getMimeType(file.getName()));
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
input = new BufferedInputStream(new FileInputStream(file));
output = new BufferedOutputStream(response.getOutputStream());
byte[] buffer = new byte[10240];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
} finally {
if (output != null) try { output.close(); } catch (IOException logOrIgnore) {}
if (input != null) try { input.close(); } catch (IOException logOrIgnore) {}
}
您可以在此处找到完整的基本示例:http://balusc.blogspot.com/2007/04/imageservlet.html
答案 1 :(得分:2)
也许每个人都误解了这个问题。
如果图像位于本地驱动器上,并且您希望Web服务器向全世界提供服务,那么首先需要将它们上传到Web服务器。
完成后,您可以使用<img>
标记中的网址来引用它们在服务器上的位置。