我正在尝试使用代码。但是,为什么网页永远不允许访问任何本地文件。
表示如果你写
<img src="c:\ImageFolder\Angelica.jpg"/>
在jsp文件中,它不起作用。
为什么不呢?我有办法从C盘中检索图像并在网页上显示吗?
答案 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