簡體   English   中英

Tomcat-在WEB-INF中顯示圖像

[英]Tomcat - display Image inside of WEB-INF

我目前正在開發JSP / Servlet應用程序,並且不希望私有圖片不會被其他不擁有它們的用戶訪問。

我的問題是用戶可以通過簡單地在html查看器中重寫路徑來訪問資產,這就是為什么我不得不將圖片放入WEB-INF文件夾,而不是從外部對其進行訪問。

圖片位於/tomcat/myProject/ROOT/WEB-INF/Users/%userName%/

但是,既然圖像在WEB-INF內,我就無法用servlet加載它們。

任何人都知道如何訪問該圖片,將其保存在session屬性中並僅使它們對請求JSP的用戶可見嗎?

編輯:我拿了Kaleb Brasee的代碼,並將其插入到我的方法中:

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ...
    BufferedImage image = ImageIO.read(new File(profilePicturePath));
    OutputStream responseStream = response.getOutputStream();
    ImageIO.write(image, "JPEG", responseStream);
    //session.setAttribute("profilepicture", PLACEHOLDER);  //PLACEHOLDER should be replaced by the actual Image, but I dont know how to do this
    //response.sendRedirect("/Index"); //doesnt get executed, because ImageIO.write(...) already commits a response before this line of code is reached
}

執行后,上面的代碼將顯示一個帶有img標記的html頁面,其中包含來自WEB-INF文件夾的圖像,但僅此而已。

這不是所需的行為,我需要將ImageIO.write(...)輸出保存為會話屬性,因此可以將其插入到/Index JSP頁面內部的特定位置。

關於如何解決這個問題的任何想法?

您可以創建一個將圖像ID作為請求參數的servlet。 如果用戶有權查看文件,則將其寫入輸出流,否則返回HTTP錯誤響應。

ImageIO.write方法對於將加載的圖像寫入HttpServletResponse OutputStream非常有用。

在加載PNG並將其寫到響應之前,我已經使用了一些代碼,如下所示:

response.setContentType("image/png");
BufferedImage image = generateImage(); // my custom method to create an image
OutputStream responseStream = response.getOutputStream();
ImageIO.write(image, "PNG", responseStream);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM