我想显示本地驱动器中的图像。我正在使用Sun Java App Server8。例如,如果我动态生成文件abc.jpg并将其存储在c:\ abc.jpg中,那么如何在jsp或servlet中使用它?如何在jsp或servlet页面中显示它?我知道在编码中提供路径c:\ abc.jpg不能显示图像,因为它不在网络服务器中。
基本上只需要创建一个Servlet它获取的InputStream它与帮助FileInputStream,并将其写入到OutputStream的HttpServletResponse一个正确设定的响应头与至少一起content- type。最后src,在<img>元素的属性中将此Servlet 以及文件标识符作为请求参数或pathinfo进行调用。例如:
Servlet
InputStream
FileInputStream
OutputStream
HttpServletResponse
content- type
src
<img>
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) {} }