我需要在一个web应用上展示上传的文件,流程如下
- 用户通过网页界面上传文件
- 图像验证
- 调用
imageRepository.store( uploadedImage, user.getSite() )
- 用户想要显示添加了
<img src="${anUploadedImage.getUrl()}"/>
的图像
但这就是我卡住的地方,有什么可以getUrl()
做?简单的解决方案是将它放在某个地方并让 Apache 提供该文件,但是我无法使用该应用程序来确保一个用户不会修改 URL 来查看其他用户的文件,这在这种情况下很重要
最佳答案
如果您想管理文件的路径,您有几个选择。
- 您可以创建一个服务来按 ID 返回文件。本质上,这个 Controller 操作(或 servlet)将从存储库中加载图像并将其序列化返回给用户。这提供了最大程度的控制。
- 您可以创建一个过滤器来执行您想要的控制,然后委托(delegate)回网络服务器来执行实际的文件服务。这仍然为您提供控制权,但让您的应用无需负责有效地序列化文件。
我想验证的一件事(因为我不确定 ${anUploadedImage}
是什么类型)是返回的 URL getUrl()
。如果它是一个 File
对象,那么 getUrl()
提供一个在 HTML 中无用的文件 URL。本质上,Web 浏览器会继续查看用户的驱动器或报告某种可疑 Activity 。
您在 HTML 中包含的 URL 需要指向您的服务将发送所需图像的位置。
关于Tomcat 上的 Java Web 应用程序 - 显示用户上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626709/