【问题标题】:How to retrieve images stored in file server?如何检索存储在文件服务器中的图像?
【发布时间】:2010-09-20 14:28:42
【问题描述】:

我有一个 java Web 服务,通过它我将图像上传到文件服务器。我想从我的 java web 应用程序访问这些图像。 如何使图像文件(以及最终的其他静态文件)从此文件服务器可用?

我唯一能想到的就是使用 Apache Http 服务器作为我的网络应用程序的代理来处理这些图像,但这绕过了网络应用程序的安全措施。


更新:

  1. Servlet 容器:Tomcat
  2. Web 应用与图像位于不同的服务器上。
  3. Web 服务与图像位于同一服务器上,并且可以直接访问文件系统。
  4. Web 应用和服务都使用 Spring Security 进行身份验证/授权,我想继续使用这个安全框架来进行图像访问。

【问题讨论】:

  • Web 应用程序能否访问上传服务存储文件的文件系统(可能通过挂载点)?
  • 哪个 servlet 容器?它是否与文件服务器在同一台机器上运行?它是否可以直接访问基于本地磁盘文件系统的文件?究竟涉及什么样的安全约束?等等..等等..

标签: java apache web-applications


【解决方案1】:

文件是如何存储的?

如果安全是一个问题,最好的选择可能是创建一个 Servlet(或类似的东西),一旦它检查了他们的凭据,它将加载图像并将其提供给用户。

您如何加载图像取决于它们的存储方式,如果您可以通过 HTTP 访问它们,您始终可以从 Servlet 打开到文件的 URLConnection 并直接以这种方式提供它(即使用 Servlet 作为代理服务器)。

没有更多细节,很难具体。

【讨论】:

  • 这个答案不应该是对问题的评论吗?
【解决方案2】:

我不确定这是否能解决您的问题,但听起来您应该设置一个上下文路径,将 URL 映射到服务器上的路径。这可以通过 tomcat 的上下文文件来完成。

有关解决方案的详细说明,请查看How to Program with Java 上的帖子

【讨论】:

    【解决方案3】:

    听起来类似于 Apache Hadoop。 请求图像/文件后,您必须进行 API 调用并将文件拉出并执行以下操作之一:

    1. 将临时文件存储到 Web 可访问服务器上的“临时”目录中。您将需要某种在后台运行的清洁器/gc 来清洁这些临时文件。这就是 Facebook 处理照片的方式。

    2. 不要在服务器上存储文件,而是检查文件类型并将 HTTP 内容类型标头设置为适当的文件类型。图片来源将如下所示<img src="getPicture.jsp?id=1234" />

    【讨论】:

    • 哎呀,使用 JSP 提供二进制流?
    • 我可能错了...不久前使用过 Java。默认情况下,JSP 返回字符数据,但如果显式设置内容类型,它将返回您想要的任何内容。在HttpResponse 中指定或设置页面指令<%@ page contentType="image/jpeg"%>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2016-11-06
    • 2014-02-17
    相关资源
    最近更新 更多