我正在尝试在浏览器中显示来自服务器的图像。我正在关注此链接 http://balusc.blogspot.in/2007/04/imageservlet.html。我必须说这是写得很好并且有记录。我试过这个,一切都很好。
当我使用ajax显示这个图像时,问题出在那里。整个图像似乎分成div中的一些代码。
据我所知,代码中使用的输出流直接写入页面。但是,实际上不可能处理输出流以某种方式在jsp的image标签中显示图像而不必创建不同的servlet。
感谢您阅读
答案 0 :(得分:5)
您无需通过AJAX请求图像数据,然后自行操作,以便显示它。只需使用<img>
代码!
如果/my_url
是您图片的位置,那么
<img src="/my-url" alt="Appropriate description"/>
会这样做。注意:/my-url
不一定是实际图像。它可以是任何返回具有相应MIME类型集的图像数据的资源(包括servlet)。
如果你想动态创建标签,可以使用自己喜欢的库,或者使用本机JS:
var oImg=document.createElement("img");
oImg.setAttribute('src', '/my-url');
oImg.setAttribute('alt', 'Appropriate description');
oImg.setAttribute('height', imgHeight);
oImg.setAttribute('width', imgWidth);
document.body.appendChild(oImg);
如果你想做这个服务器端(如果是这样,这真的是AJAX吗?),那么你可能想看看data uri scheme。
使用此方案,您可以直接将数据传输到图像标记,而无需为其提供HTTP资源。要使用此功能,请将输出流转换为base64并使用以下命令:
<img src="data:image/png;base64,converted-data-stream-goes-here..." alt="Who needs HTTP?"/>
image/png
会根据源数据的MIME类型而改变。
阅读链接的维基百科页面,以完全理解这里的权衡。
答案 1 :(得分:0)
只是添加我如何实现它的解决方案。 我通过ajax引用了一个新页面(从我提交表单的页面),在新页面中,我使用了一个图像,通过它的src属性,我调用了servlet方法,该方法通过其输出流写入图像。
这样servlet就将我的图像写入新文件,我可以将它放在任何地方。