最近在研究jsp图片显示的问题,利用img标签,显示本工程下的相对路径下的图片当然都没有问题,现在考虑到不想把图片只放到本工程下,如果放在硬盘的另一个目录下,用系统绝对路径来找到话,比如<img src="file:///X:\X.jpg">,这样在预览里看的到可是在实际的浏览器中现在几乎都屏蔽了,这样不行。就考虑用一个javabean来读取指定的图片文件,可是不知道怎么把读出来的file类用在src下,知道的帮忙回答一下好吗?或者还有什么好的解决方法,可以把图片放在硬盘的另外地方。如果是另外一台机器上硬盘里的图片呢,可以直接访问吗,还是必须启动一个服务器来提供图片?
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=GBK");
response.setContentType("image/jpeg");
FileInputStream fis = new FileInputStream("C:/xxx.jpg");
OutputStream os = response.getOutputStream();
try {
int count = 0;
byte[] buffer = new byte[1024*8];
while ( (count = fis.read(buffer)) != -1 )
os.write(buffer, 0, count);
} finally {
fis.close();
os.close();
}
}
写这样一个servlet,将图片读出来.然后直接访问这个servlet就可以了在页面里也可以直接引用<img src="你的servlet地址" />
<%@ page import="java.io.FileInputStream"%>
<%@ page import="java.io.OutputStream"%><%
String perfectName = "c://1348108148682.jpg";
FileInputStream is = new FileInputStream(perfectName);
int i = is.available(); // 得到文件大小
byte data[] = new byte[i];
is.read(data); // 读数据
is.close();
response.setContentType("image/*"); // 设置返回的文件类型
OutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象
toClient.write(data); // 输出数据
toClient.close();
%>