设置java servlet和Ajax请求以获取JPG图像到前端

时间:2018-05-29 06:52:11

标签: java ajax image servlets send

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。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

数据:图像/ JPG;图像/ GIF;图像/ PNG;图像/ JPEG; BASE64,

尝试一次......