java - 显示来自 java 应用程序上下文外部的图像。

标签 java image

这是一个关于在 Windows 7 平台上使用本地 java 服务器测试文件上传功能的问题。由于这个问题是随着 Marko 的输入而演变的,所以我对其进行了编辑,以便那些遇到同样挑战的人不会在演变细节上浪费时间并更快地得出结论。

挑战是将上传的文件定向到 WAR 结构之外的文件夹并从那里成功读取它。例如:上传图片到c:/tmp/然后重定向到显示图像 <img src="c:/tmp/test.jpg" /> 的确认页面。上传成功,但图像无法显示。根据 Marko 的输入,这是有道理的,因为位于本地主机的浏览器将拒绝使用 c: 从本地磁盘结构加载任何内容。 。也许这些是类似于文件输入控制的安全考虑,我们无法设置默认路径...

以下标记将在本地创建的 .html 文件中起作用,但粘贴到 jsp 中时将不起作用。不同之处在于浏览器使用 localhost 来访问 jsp。

<img src="c:/tmp/test.jpg" />

解决方案

我认为马科的回答几乎定义了需要做什么。虽然我没有采用这种方法,但这显然是更好的方法,我会接受它作为答案。谢谢,马可!

对于那些不想费心安装 Web 服务器并愿意接受一些黑客攻击的人,这就是我所做的。同样,我不想将文件上传到我的 WAR 结构中,因为这样我需要记住在部署到服务器之前清除该文件夹。但该上传文件夹仍然需要可访问,因此我只是创建了另一个虚拟项目并将该上传文件夹放在其 WebContent 下。这适用于我的本地测试。唯一的麻烦是上传文件后,我需要在 Eclipse 中刷新虚拟项目的 WebContent。

config.properties

#for uploading files
fileUploadDirectory=C:/javawork/modelsite/tmp/WebContent

#for building html links
publicFileServicePrefix=http://localhost:8080/tmp

<img src="http://localhost:8080/tmp/test.jpg" />  // this works - tmp is the name of my dummy project.

最佳答案

如果您逐字引用进入浏览器的 HTML(您通过“查看源代码”访问的 HTML),那么这与 Java 无关。浏览器是解释这些链接的人。如果它们无法加载,则问题出在浏览器/文件系统中。

更新

根据您的附加诊断结果,我得出的结论是,如果从来自 Internet URL 的 HTML 文件引用浏览器(明智地!),则拒绝从本地磁盘加载任何内容,即使该 URL 是 本地主机

更新2

(已删除,无关)

更新3

无论您如何处理上传到服务器的文件,它绝对不会像您的解决方案那样 - 文件位于服务器的本地文件系统上,而不是客户端的文件系统上。这类事情可以在 Apache HTTP 服务器级别处理——为静态内容保留 URL 部分,并使用一个基本目录来配置 Apache,以从中提供静态内容。即使您在本地运行服务器,在测试它的同一台机器上,您仍然需要通过网络接口(interface)。

关于java - 显示来自 java 应用程序上下文外部的图像。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10156122/

相关文章:

java - 使用 JarOutputStream 制作可运行的 jar 文件

java - 创建方法时 Eclipse 表现得很奇怪

python - 翻转图像

javascript - 如何让我的图像在 HTML 或 CSS 中的某个点停止重复?

r - 如何在 R 中显示 base64 图像

Java,JoptionPane : the yes-no dialog keeps on showing

java - 不显示对话框

java - 测试。如何正确处理这个异常

jQuery 在绑定(bind) .load() 事件之前检查图像是否已加载

javascript - 使用 css(或 javascript)标准化不同比例的图像区域?