【求助】servlet传来的图片不显示
本地F盘有一个“Picture“文件夹,文件夹里有10张图片,依次命名为0.jpg、1.jpg、3.jpg……9.jpg。我想实现点击按钮随机切换图片的功能,将0~9间的随机数(num)作为参数传到servlet,然后在servlet中读取图片并输出。在前台将<img />的src属性指定为servlet路径来显示图片。但是图片显示不出来,不知哪里出了问题,向各位高手求教,万分感谢!html部分:
<input type="button" value="Show“ onlick="getImage()" />
<img id="image" src="" style="display:none" />
javascript部分:
function getImage(){
var num=Math.floor(Math.random()*10); //获得1~9的随机数
var xmlhttp;
xmlhttp=new ActiveXObject("Microsoft.XMLHttp");
xmlhttp.open("get","servlet/PictureServlet?num="+num+"&time="+new Date().getTime(),true);
xmlhttp.send(null);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("image").style.display="block"; //响应完毕后,将图片设为“显示”状态
document.getElementById("image").src="http://localhost:8080/Picture/servlet/PictureServlet";
}
}
}
servlet部分:
response.setContentType("image/jpeg");
int num=Integer.parseInt(request.getParameter("num")); //获取参数
String url="F:\\Picture\\"+num+".jpg"; //图片文件路径
FileInputStream hFile=new FileInputStream(url); //创建读取流
int length=hFile.available(); //获得这个文件流的长度
byte[] b=new byte[length]; //创建一个长度等于文件流长度的二进制数组
hFile.read(b); //读取二进制数据,存入数组
hFile.close(); //关闭文件流
OutputStream out=response.getOutputStream(); //获得向客户端输出二进制数据的对象
out.write(b); //输出数据
out.close(); //关闭输出对象