AJAX能否读取数据库中的图片然后显示出来?

时间:2022-02-10 11:17:20
AJAX能否读取数据库中的图片然后显示出来?谁能提供相应的servlet和页面,如果分不够跟我说!我不会吝惜分的。

10 个解决方案

#1


文档类型不一样,不可能把字节码内容和文本内容放在一起吧
image类型还是要用servlet/jsp读出来,设置文件输出类型

#2


up

#3


只知道ajax从后台读出来的结果集有responseText、responseXML,没听说读出图片的,望高人出现

#4


文档类型就不一样,有responseBody,但是有什么用?

#5


在jsp里
<img src="getImage?id=xxx"/>

在getImage 对应的servlet里

byte[] buf = 假设你已经获取了byte数组
res.setContentType("image/jpeg");
out = res.getOutputStream();

out.write(buf, 0, buf.length); 
out.close();

#6


我之前也认为不行,但看了楼上的,突然产生了一个想法,就是利用ajax ,把
<form name="f1" action="XX" method="XX">
<img src="getImage?id=xxx"/>
<!--src是提交给一个servlet的让这个servlet来处理图片的输出,像楼上那样-->
</form>
添加到页面

#7


图片肯定是用servlet输出来的,至于怎么样去调用那就是你那边的事了,就简单得很了。

#8


这样肯定是没有问题的了
我项目中就是这样处理的
不需要ajax也可以实现

#9


页面不刷新图片就是写不出来。
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title></title>
<script language="javascript">
var XMLHttpReq = false;   
    function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
XMLHttpReq = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
function sendRequest(url) {
createXMLHttpRequest();
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = processResponse; XMLHttpReq.send(null);   }
    function processResponse() {
     if (XMLHttpReq.readyState == 4) { 
         if (XMLHttpReq.status == 200) { 
             var res=XMLHttpReq.responseXML.getElementsByTagName("pic")[0].firstChild.data;
                  var p=document.getElementById("pic");
                  var pic=document.createElement("img");
                  p.appendChild(pic);
                  p.src="picread?id="+res;          
            } else { 
                window.alert("");
            }
        }
    }
    function picload() {
sendRequest("pic");
}
</script>
</head>
<body>
<span id="pic">
</span>
<input type="button" onclick="picload();">
<img src="picread?id=40288b0e149658900114965893770001">
</body>
</html>

下面用servlet直接显示就没有问题。用ajax就不行。看样页面不刷新就是不行。

#10


图片的url请求本来就是异步的,所以没有必要用ajax来做。
只用ajax把url请求的参数得到就行了,再直接用javascript把图片的url参数改掉即可。
记得servlet生成的图片要记浏览器不得缓存,不然不会看到更新的效果。

#1


文档类型不一样,不可能把字节码内容和文本内容放在一起吧
image类型还是要用servlet/jsp读出来,设置文件输出类型

#2


up

#3


只知道ajax从后台读出来的结果集有responseText、responseXML,没听说读出图片的,望高人出现

#4


文档类型就不一样,有responseBody,但是有什么用?

#5


在jsp里
<img src="getImage?id=xxx"/>

在getImage 对应的servlet里

byte[] buf = 假设你已经获取了byte数组
res.setContentType("image/jpeg");
out = res.getOutputStream();

out.write(buf, 0, buf.length); 
out.close();

#6


我之前也认为不行,但看了楼上的,突然产生了一个想法,就是利用ajax ,把
<form name="f1" action="XX" method="XX">
<img src="getImage?id=xxx"/>
<!--src是提交给一个servlet的让这个servlet来处理图片的输出,像楼上那样-->
</form>
添加到页面

#7


图片肯定是用servlet输出来的,至于怎么样去调用那就是你那边的事了,就简单得很了。

#8


这样肯定是没有问题的了
我项目中就是这样处理的
不需要ajax也可以实现

#9


页面不刷新图片就是写不出来。
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title></title>
<script language="javascript">
var XMLHttpReq = false;   
    function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
XMLHttpReq = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
function sendRequest(url) {
createXMLHttpRequest();
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = processResponse; XMLHttpReq.send(null);   }
    function processResponse() {
     if (XMLHttpReq.readyState == 4) { 
         if (XMLHttpReq.status == 200) { 
             var res=XMLHttpReq.responseXML.getElementsByTagName("pic")[0].firstChild.data;
                  var p=document.getElementById("pic");
                  var pic=document.createElement("img");
                  p.appendChild(pic);
                  p.src="picread?id="+res;          
            } else { 
                window.alert("");
            }
        }
    }
    function picload() {
sendRequest("pic");
}
</script>
</head>
<body>
<span id="pic">
</span>
<input type="button" onclick="picload();">
<img src="picread?id=40288b0e149658900114965893770001">
</body>
</html>

下面用servlet直接显示就没有问题。用ajax就不行。看样页面不刷新就是不行。

#10


图片的url请求本来就是异步的,所以没有必要用ajax来做。
只用ajax把url请求的参数得到就行了,再直接用javascript把图片的url参数改掉即可。
记得servlet生成的图片要记浏览器不得缓存,不然不会看到更新的效果。