【发布时间】:2017-12-05 08:01:49
【问题描述】:
我目前正在开发一个 JSP/Servlet 应用程序,并且不希望其他不拥有它们的用户可以访问私有图片。
我的问题是用户可以通过在他们的 html 查看器中简单地重写路径来访问资产,这就是为什么我必须将图片放入 WEB-INF 文件夹中,以使它们不能从外部访问。
图片位于/tomcat/myProject/ROOT/WEB-INF/Users/%userName%/
但现在图像在 WEB-INF 中,我无法使用我的 servlet 加载它们。
有人知道如何访问图片,将其保存在会话属性中,并且只让请求 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 页面内的特定位置。
关于如何解决这个问题的任何想法?
【问题讨论】: