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