我有以下要求。我点击the shown page中的显示链接。我将javascript函数displayImage
称为输入参数filename
和isDisplay
。在此函数中,我生成一个'img'
标记src="download?filename=DCS.jpg&isDisplay=true"
。
我希望这可以调用连接到 hadoop 的servlet,获取所请求图像的bufferedImage
并写入响应outputstream
。
但这并没有显示图像,当我动态生成img标签时甚至都没有调用servlet。
我该如何动态显示?
JSP CODE:
<%List<String> filenames = (ArrayList<String>)request.getAttribute("filenames");
if(filenames.size()>0){
for (String filenme : filenames){
%>
<div id="filename">
<a href="javascript:submit('<%=filenme%>', 'false')" onclick="javascript:submit('<%=filenme%>', 'false')"><%=filenme%></a>
</div>
<div id="displink">
<a href="javascript:displayImage('<%=filenme%>', 'true')" onclick="javascript:displayImage('<%=filenme%>', 'true')">Display</a>
</div>
<div id="line"></div>
<% }
}%>
</div>
<% %>
<div id="displayImage">
</div>
JAVASCRIPT CODE:
function displayImage(imageName, isDisplay){
var display = document.getElementById('displayImage');
var parameters = "filename="+imageName+"&isDisplay="+isDisplay;
display.innerHTML="<img src=\"download?"+parameters+"\"";
display.style.display="block";
}
SERVLET CODE:
BufferedImage bi = ImageIO.read(fs.open(item.getPath()));
if (isDisplay) {
resp.setContentType("image/"+extn);
OutputStream out = resp.getOutputStream();
ImageIO.write(bi, extn, out);
}