设置一个JavaServlet和一个Ajax请求,以便在前端获得一个JPG图像
看起来很简单!(或者应该)基于用户数据发送Ajax请求,并查看是否为该用户存储了图像。如果有,将其发送回并加载到页面上。我已经看过很多ajax或servlet本身的代码,但没有一起看到 以下是我的js ajax调用:设置一个JavaServlet和一个Ajax请求,以便在前端获得一个JPG图像,java,ajax,image,servlets,send,Java,Ajax,Image,Servlets,Send,看起来很简单!(或者应该)基于用户数据发送Ajax请求,并查看是否为该用户存储了图像。如果有,将其发送回并加载到页面上。我已经看过很多ajax或servlet本身的代码,但没有一起看到 以下是我的js ajax调用: function getImage(page){ //var page = new Image(); $.ajax({ type:"post", url:"GetImageServlet", data: { bookIDIn:
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。
提前感谢。jpg可能是问题所在。您也可以使用多种内容类型 资料:image/jpg;图像/gif;图像/png;图像/jpeg;base64
再试一次…您是否遇到了一些错误,这正是您面临的问题。问题是我不知道如何将字节(我假设我拥有的是一个字节数组)转换为图像数据。我见过这样的代码:document.getElementById(“ItemPreview”).src=“data:image/png;base64,”+YourByte;但这对我不起作用。首先,你应该使用
GET