所以,我正在使用 Spring 框架开发简单的 Web 应用程序。
应用程序用户可以上传图像。
存储/加载图像的最佳实践是什么?
我在一些论坛上找到了解决方案,有人建议将文件存储到 user.dir 目录。
好吧,我也这么做。
当用户上传图像时,我将图像存储到 user.dir 目录中。
现在,我有一个问题:如何将图像从 user.dir 目录加载到页面?
<img src="path/to/dir/where/images/stored"/>
最佳答案
最佳实践确实是将此类数据存储在 Web 应用程序树之外,以避免重新部署时出现问题。它们的确切存储位置更多的是一个约定问题,user.dir 确实是一个合理的选择。
不过,您不能直接提供这些文件,通常是通过创建映射到例如 images/*
的 servlet 来完成的。解析请求 URL(例如 <img src="approot/images/apic.jpg"/>
)并基于该 url 如果获取并提供 path/to/dir/where/images/stored/apic.jpg
。作为一个额外的好处,Servlet 使您可以完全控制下载的内容、时间和下载者,也许您稍后在应用程序生命周期中将需要这种控制。
您可以使用getPathInfo检索 servlet 名称后面的 URL 部分,为输出设置正确的 MIME 类型,并将请求的文件流式复制到 servlet 的输出。
可以在 BalusC's blog 上找到此类 servlet 的公开可用且解释良好的示例。
关于Java Web App上传和加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665999/