【发布时间】:2014-10-29 11:59:28
【问题描述】:
我的应用程序的用户上传了某些图像,并且只能由他们访问。我怎样才能将它们显示为缩略图或其他方式。我将图像存储在文件系统(webapp 外部)中,并且只将它们的路径存储在数据库中。
我发现的一个选项是配置 tomcat 以通过 server.xml 中的以下更改来公开该目录。
<Context path="/images" docBase="/home/app/basedir" />
然后通过
访问图片localhost:8080/context/images/b1sd2e09102.jpg
等等。 (我是使用UUID生成随机图片名称,以免被猜到)
但是,这对我来说不是一个理想的解决方案,因为网址(如果其他用户知道的话)仍然是公开的。 目前我可以通过在我的 spring 控制器中下载它们:
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(Model model, @RequestParam("id") String key, HttpServletResponse response) throws Exception {
//get item from db first based on key
Item item = dbservice.get(key);
InputStream is = new FileInputStream(item.getPath());
response.setHeader("Content-Disposition", "attachment; filename=" + item.getFileName());
IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
....
}
有没有办法在浏览器上呈现这些图像?
【问题讨论】:
标签: jsp spring-mvc spring-security