从我的电脑文件夹在JSP页面上显示图像

时间:2014-01-22 04:58:20

标签: image jsp

我正在尝试使用代码。但是,为什么网页永远不允许访问任何本地文件。

表示如果你写

<img src="c:\ImageFolder\Angelica.jpg"/>

在jsp文件中,它不起作用。

为什么不呢?我有办法从C盘中检索图像并在网页上显示吗?

2 个答案:

答案 0 :(得分:4)

img标签的src属性用于引用源的相对路径或URL,即源可以在您的Web容器内或由其他一些网站托管。您不能使用绝对路径作为源,因为您不能引用容器外的文件。

作为一种解决方法,您可以创建一个servlet,它可以从Web容器外部加载文件,然后将/ stream文件写入您的响应。您将向servlet提供文件路径,该servlet将为您提供文件。

假设你创建一个servlet用于提供名为'FileServlet'的文件,并且这个FileServlet将'path'作为获取文件的参数,你的img标签将如下所示:

<img scr="FileServet?path=c:\\parentDirectory\file.jpg">

请参阅:File Servlet by BalusC了解详细工作情况。

答案 1 :(得分:1)

> :)Try

 <html>
    <%@page import="java.io.File"%>
    <%@page import="java.io.IOException"%>
    <%@page import="java.awt.image.BufferedImage"%>
    <%@page import="javax.imageio.ImageIO"%>
    <%@page import="java.io.ByteArrayOutputStream"%>

    <%@page import="java.math.BigInteger"%>
    <%@page import="javax.xml.bind.DatatypeConverter"%>
    <%@page import="java.awt.image.BufferedImage"%>

    <head>

    </head>
    <body>
    <%
    //write image
    try{
      String imgName="C:\\PATROL_SITE_IMAGES\\17-Jun-2016\\7588519616\\249_R.jpg";
      BufferedImage bImage = ImageIO.read(new File(imgName));//give the path of an image
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write( bImage, "jpg", baos );
        baos.flush();
        byte[] imageInByteArray = baos.toByteArray();
        baos.close();                                   
        String b64 = DatatypeConverter.printBase64Binary(imageInByteArray);
        %>
        <img  class="img-responsive" src="data:image/jpg;base64, <%=b64%>"/>                            
        <% 
    }catch(IOException e){
      System.out.println("Error: "+e);
    } 


    %>


    </body>
    </body>
    </html>enter code here