我正在创建一个用户可以上传照片的项目。此照片存储在“images / uploads / filename”文件夹中。创建个人资料并显示照片后,我使用<img>
标记src
作为“images / uploads / filename”,但照片未显示。
如果我手动将照片复制到相邻的文件夹“images / abc / filename”,然后将其用作源,那么它就能正常工作。
这是如何引起的,我该如何解决?我需要使用相同的文件夹来上传和下载照片。
答案 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">
问题很模糊,所以希望这就是你要找的。 p>
让我知道,如果这是错误的,请再解释一下,我会尽力帮助:)