提问者:小点点

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


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

意思是如果你写

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

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

为什么不呢?有没有办法让我从我的C驱动器中检索图像并显示在网页中?


共2个答案

匿名用户

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

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

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

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

参考:BalusC的File Servlet以了解详细工作。

匿名用户

> :)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>