我有一个具有以下结构的 JSP 页面:
<input type='file' id='logo' />
<iframe src='view?media=logo'></iframe>
我在这里要做的是让用户选择一个图像,然后我会将它上传到服务器上“WEB-INF”内的一个目录。我已经成功实现了服务器端这意味着我可以看到复制到目标文件夹的新图像。但是我需要能够向客户展示图像。由于图像位于“WEB-INF”文件夹中,我无法通过使用“img”元素并操作它的“src”属性来实现。所以我实现了另一个带有 URL 模式“视图”的 servlet。此 servlet 接收客户端请求的媒体(在本例中为“徽标”)并使用以下代码将页面转发到请求的资源:
String media = request.getParameter("media");
String location = FileManager.getView(media);
getServletContext().getRequestDispatcher(location).forward(request, response);
因此,如果一切按计划进行,则最近上传的图像应显示在 iframe 内。
问题是 iram 一直显示与我的请求相关的旧图像,但是当我右键单击图像并选择“在新窗口中打开”时,我看到了更正后的图像。
我做了一些研究,发现这个问题在某种程度上与浏览器缓存图像有关,解决方案建议浪费在“src”属性的末尾添加一个随机数:
<img src='logo.png?random=klafjeiej3qk213 />
虽然我无法将此修复应用于我的问题,因为图像存储在 WEB-INF 中,并且我使用 servlet 来检索它们。
是否有可能解决这个缓存问题(如果是缓存问题)?