动态下载和显示图像

时间:2015-10-09 07:42:21

标签: javascript java jsp servlets hadoop

我有以下要求。我点击the shown page中的显示链接。我将javascript函数displayImage称为输入参数filenameisDisplay。在此函数中,我生成一个'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);
}

0 个答案:

没有答案