Настройте Java-сервлет и Ajax-запрос, чтобы получить изображение JPG для внешнего интерфейса. - PullRequest
0 голосов
/ 29 мая 2018

Изображение ответа "текст" Кажется, просто!(Или должно быть) На основании пользовательских данных отправьте запрос Ajax и посмотрите, есть ли изображение для этого пользователя.Если есть, отправьте его обратно и загрузите на страницу.Я видел много кода для ajax или самого сервлета, но ничего вместе.

Вот мой вызов 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();
    }
    });

}

Вотсервлет:

    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);
    }



}

Этот сервлет работает в том, что он возвращает данные пользователю, просто не знаю точно, как превратить его в нужный мне элемент img.Не уверен, нужно ли менять сервлет или нет.Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

jpg может быть проблемой. Вы также можете использовать несколько типов контента.

data: image / jpg; image / gif; image / png; image / jpeg; base64,

tryодин раз ...

...