Picture of response "text"看起来很简单! (或应该)基于用户数据发送Ajax请求并查看是否为该用户存储了图像。如果有,请将其发回并在页面上加载。我已经看到很多代码用于ajax或servlet本身,但没有任何内容。
这是我的js ajax电话:
function getImage(page){
//var page = new Image();
$.ajax({
type:"post",
url:"GetImageServlet",
data: {
bookIDIn: currentBook.id,
userIDIn: currentBook.ownerID,
pageIn: page
},
async:true,
success:function(resp){
if(resp == "false"){
document.getElementById("serverErrorCode").innerHTML = "101_GETIMAGE_ERR";
showErrorModal();
} else {
//HOW TO TURN resp INTO AN IMAGE?
}
},
error:function(){
document.getElementById("serverErrorCode").innerHTML = "102_GETIMAGE_ERR";
showErrorModal();
}
});
}
这是servlet:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String ownerID = request.getParameter("userIDIn");
String bookID = request.getParameter("bookIDIn");
String page = request.getParameter("pageIn");
boolean resp = ownerID != null && bookID != null && page != null;
if(resp){
resp = !ownerID.isEmpty() && !bookID.isEmpty() && !page.isEmpty();
}
if(resp){
String root = baseRoot + ownerID + "\\" + bookID + "\\page\\p" + page + ".jpg";
System.out.println("root: " + root);
ServletContext cntx = request.getServletContext();
String mime = cntx.getMimeType(root);
if (mime == null) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
} else {
System.out.println("mime: " + mime);
}
response.setContentType(mime);
File file = new File(root);
response.setContentLength((int)file.length());
FileInputStream in = new FileInputStream(file);
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
out.close();
in.close();
} else {
response.getWriter().print(resp);
}
}
这个servlet的工作原理是它将数据传回用户,只是不知道如何将其转换为我需要的img元素。不确定是否需要更改servlet。 提前谢谢。
答案 0 :(得分:0)
jpg可能是问题。你也可以使用多种内容类型。
数据:图像/ JPG;图像/ GIF;图像/ PNG;图像/ JPEG; BASE64,
尝试一次......