如何从上载图像的文件夹下载图像?

时间:2012-05-03 18:21:28

标签: image jsp servlets file-upload download

我正在创建一个用户可以上传照片的项目。此照片存储在“images / uploads / filename”文件夹中。创建个人资料并显示照片后,我使用<img>标记src作为“images / uploads / filename”,但照片未显示。 如果我手动将照片复制到相邻的文件夹“images / abc / filename”,然后将其用作源,那么它就能正常工作。

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

另见:

答案 1 :(得分:0)

确保您拥有正确的路径并包含图片扩展名

仅用于测试,将你的img标签放在index.php

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

<强> /root/index.php

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

<强> /root/images/abc/filename.jpg

这应该显示图像。


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

<强> /root/user/index.php

现在当你使用img tag时使用这个路径(相对链接):

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

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


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

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


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

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