我正在将图像文件从数据库上传到jsp。我使用SQL选择了图像,如下所示
select (logo_img_one) from accounts_logo where logo_usrm_id=1
我使用二进制流作为
读取图像InputStream readImg = rs1.getBinaryStream(1);
将内容类型设为“image / jpeg”为
response.setContentType("image/jpg");
现在我想知道如何使用响应的getoutputstream将图像发送到ajax以及如何进入ajax。我怎样才能做到这一点?
答案 0 :(得分:1)
这不起作用。 JavaScript无法在本地或其他地方保存检索到的字节,并告诉浏览器显示它。最好的办法是将URL作为字符串传回图像,然后让JavaScript将其设置为HTML src
元素的<img>
属性。
E.g。在servlet中
response.setContentType("text/plain");
response.getWriter().write(imageUrl); // e.g. "images/some.png"
和JS
var imageUrl = xhr.responseText;
var img = document.createElement("img");
img.src = imageUrl;
document.getElementById("someDivId").appendChild(img);
这样一个
<div id="someDivId"></div>
将动态地以类似
的方式结束<div id="someDivId><img src="images/some.png" /></div>
您可以创建一个图像servlet,将图像从数据库流式传输到响应的输出流,并在/images/*
上映射servlet。您可以找到示例here。
答案 1 :(得分:0)
设置contentType
后,您可以按如下方式使用输出流 Printwritter out =response.getWritter();
out.println(imageObject);
out.flush
答案 2 :(得分:0)
它可能有用......想法是将图像的src属性设置为:
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYlJREFUeNrMVD1rwlAUPfkwBBxFKQQlDhmjqzj4F9w7FfwThZaW9n8UnDrrn1BEXNTBRQQhEE1ERRR0Sd990A7VaKJJ6YHzEu4N99z3zrsRGo2GAuCF8YFRQzSwGOuM7zJb3hgfES2o0SdGSWRLDfGhRgLpGAXS4q0VCoUCBEHwzd8skM/nUSqVoCjKybz8O1CtVn2LeZ4H27YxnU6xXC6x3+95PJPJoFKpoN1uY7vdnhfww3w+x3A4xGaz4d3quo5sNvuTTyaTXKTb7cJ13csCzWbzKKaqKj/zXC4HSZKO8iRcLpcxGAwwmUzC7UDTNBSLRSQSiVAeyUGNpM4v4XA4oNfr8eMMLJBKpWCaJn9fLBawLAur1Qq73Y6b/H0pyNyrTDYMA7PZDKPRCOv1+uQ3ZCqZe9UcOI6DTqfjW5zMbLVa3Bu6RaE9GI/HZ/P9fp8/qfipYROj+ukEnuQgEx0GImKGHGSC//UO/kTAibG+QwIfMQrUyeRXusaM94x3ERW2GT8Zn78EGACRmoKUJhB1TQAAAABJRU5ErkJggg=="
可以通过调用servlet通过ajax查询base64字符串,并对从DB中检索的输入流进行编码。