Tomcat 上的 Java Web 应用程序 - 显示用户上传的文件

标签 java tomcat file-upload spring-mvc download

我需要在一个web应用上展示上传的文件,流程如下

  1. 用户通过网页界面上传文件
  2. 图像验证
  3. 调用imageRepository.store( uploadedImage, user.getSite() )
  4. 用户想要显示添加了<img src="${anUploadedImage.getUrl()}"/> 的图像

但这就是我卡住的地方,有什么可以getUrl()做?简单的解决方案是将它放在某个地方并让 Apache 提供该文件,但是我无法使用该应用程序来确保一个用户不会修改 URL 来查看其他用户的文件,这在这种情况下很重要

最佳答案

如果您想管理文件的路径,您有几个选择。

  1. 您可以创建一个服务来按 ID 返回文件。本质上,这个 Controller 操作(或 servlet)将从存储库中加载图像并将其序列化返回给用户。这提供了最大程度的控制。
  2. 您可以创建一个过滤器来执行您想要的控制,然后委托(delegate)回网络服务器来执行实际的文件服务。这仍然为您提供控制权,但让您的应用无需负责有效地序列化文件。

我想验证的一件事(因为我不确定 ${anUploadedImage} 是什么类型)是返回的 URL getUrl()。如果它是一个 File 对象,那么 getUrl() 提供一个在 HTML 中无用的文件 URL。本质上,Web 浏览器会继续查看用户的驱动器或报告某种可疑 Activity 。

您在 HTML 中包含的 URL 需要指向您的服务将发送所需图像的位置。

关于Tomcat 上的 Java Web 应用程序 - 显示用户上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626709/

相关文章:

angularjs - Angular 文件上传队列

java - android ListView 设置适配器问题

java - 我应该绑定(bind)我的服务还是多次调用 startService ?

java - 类型必须实现继承的抽象方法 TextToSpeech.OnInitListener.onInit(int)

tomcat - 我的 servlet 过滤器 JAR 在哪里用于 Tomcat 8 和 Jira?

tomcat - HAProxy - URL 重定向和重写

java - SAP Hybris - Tomcat 忽略内存设置

php - 以相同的 CodeIgniter 形式上传图像和文本输入

java - 如何在 @PostConstruct 中模拟 bean?

javascript - Jquery/Ajax 拖放文件 uploader 不提交文件