1

我正在创建一个项目,用户可以在其中上传他的照片。这张照片存储在文件夹“images/uploads/filename”中。创建他的个人资料并显示照片时,我使用<img>带有“图像/上传/文件名”的标签src,但照片没有显示。如果我手动将照片复制到相邻的文件夹“images/abc/filename”,然后将其用作源,那么它就可以工作。

这是如何引起的,我该如何解决?我需要使用同一个文件夹来上传和下载照片。

4

2 回答 2

2

如果您将 web 应用程序作为 IDE 项目运行并将上传的图像存储在 IDE 的项目空间中,则可能会发生这种情况。在 IDE 的项目文件夹中执行的外部更改(如通过您的 servlet 代码)不会立即反映在已部署服务器的工作文件夹中。只有当您触摸它(通过刷新项目)或通过复制它(正如您碰巧发现的那样)时,它才会被反映。

毕竟,将上传的文件存储在 webapp 的部署文件夹中是个坏主意。每当您重新部署 webapp 时,这些文件都会丢失,因为这些文件不包含在原始 WAR 文件中。

您需要将它们存储在 webapp 的部署文件夹之外的某个不同的固定路径上,例如/var/webapp/uploads. 您不应该使用相对路径或围绕它getRealPath()创建对象。File只需使用固定路径。您始终可以将固定路径配置为上下文参数设置、VM 参数、属性文件设置甚至 JNDI 条目。

然后,要将其提供给万维网,只需将该路径作为另一个 docroot 添加到服务器配置中。目前尚不清楚您使用的是什么服务器,但在 Tomcat 中,<Context>只需在server.xml.

也可以看看:

于 2012-05-04T04:13:30.853 回答
0

确保您的路径正确并包含图像扩展名

只是为了测试,把你的 img 标签放在 index.php

<img src="images/abc/filename.jpg">

/root/index.php

现在将您的图像放入您的 abc/ 文件夹

/root/images/abc/文件名.jpg

这应该显示图像。


如果您的 img 标签位于根目录中的另一个文件夹中,如下所示

/root/user/index.php

现在,当您使用 img 标签时,请使用此路径(相对链接):

<img src="../images/abc/filename.jpg">

注意图像路径“../”的开头,它用于返回根目录。


如果包含 img 标签的 php 或 html 文件更深,请记住为每个级别添加 ../,2 个文件夹的深度应该是:

<img src="../../images/abc/filename.jpg">


问题很模糊,所以希望这就是你要找的。

让我知道,如果这是错误的,请多解释一下,我会尽力提供帮助:)

于 2012-05-03T18:48:28.563 回答