0

我正在尝试在浏览器中显示来自服务器的图像。我正在关注此链接 http://balusc.blogspot.in/2007/04/imageservlet.html。我必须说这是很好的书面和记录。我试过了,一切正常。

当我使用 ajax 显示此图像时,问题就出现了。整个图像似乎分解成 div 内的一些代码。

我知道代码中使用的输出流直接写入页面。但是真的不可能处理该输出流以某种方式在 jsp 的图像标记中显示图像而无需创建不同的 servlet。

感谢您阅读

4

2 回答 2

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 类型而改变。

阅读链接的 Wikipedia 页面以充分了解此处的权衡取舍。

于 2013-01-21T16:42:56.200 回答
0

只需添加我如何实现它的解决方案。我通过 ajax 引用了一个新页面(来自我提交表单的页面),在新页面中我使用了一个图像,并通过它的 src 属性我调用了 servlet 方法,该方法通过其输出流写入图像。

这样,servlet 将我的图像写入我可以放置在任何地方的新文件。

于 2013-01-22T14:52:16.030 回答