如何使用位于本地驱动器中的映像文件,在jsp页面或servlet页面中打印?

时间:2010-01-04 16:20:46

标签: java jsp servlets

我想显示位于本地驱动器中的图像。我正在使用sun java app server 8.例如,如果我动态生成一个文件abc.jpg并将其存储在c:\ abc.jpg中,那我怎么能在jsp或servlets中使用它?如何在jsp或servlet页面中显示它? 我知道在编码中给出路径c:\ abc.jpg以显示图像不起作用,因为它不在网络服务器中..

2 个答案:

答案 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>标记中的网址来引用它们在服务器上的位置。