Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置一个JavaServlet和一个Ajax请求,以便在前端获得一个JPG图像_Java_Ajax_Image_Servlets_Send - Fatal编程技术网

设置一个JavaServlet和一个Ajax请求,以便在前端获得一个JPG图像

设置一个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:

看起来很简单!(或者应该)基于用户数据发送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。
提前感谢。

jpg可能是问题所在。您也可以使用多种内容类型

资料:image/jpg;图像/gif;图像/png;图像/jpeg;base64


再试一次…

您是否遇到了一些错误,这正是您面临的问题。问题是我不知道如何将字节(我假设我拥有的是一个字节数组)转换为图像数据。我见过这样的代码:document.getElementById(“ItemPreview”).src=“data:image/png;base64,”+YourByte;但这对我不起作用。首先,你应该使用
GET