我正在创建一个项目,用户可以在其中上传他的照片。这张照片存储在“图像/上传/文件名”文件夹中。创建他的个人资料并显示照片后,我使用<img>标记src作为“ images / uploads / filename”,但未显示照片。如果我手动将照片复制到相邻的文件夹“ images / abc / filename”,然后将其用作来源,那么它将起作用。
<img>
src
这是怎么引起的,我该如何解决?我需要使用相同的文件夹来上传和下载照片。
如果您将Webapp作为IDE项目运行并将上传的图像存储在IDE的项目空间中,则可能会发生这种情况。在IDE的项目文件夹中进行的外部更改(例如通过servlet代码)不会立即反映在已部署的服务器的工作文件夹中。仅当您触摸它(通过刷新项目)或通过复制它(碰巧发现)时,它才会被反映出来。
毕竟,将上传的文件存储在webapp的deploy文件夹中不是一个好主意。每当您重新部署Web应用程序时,这些文件将全部丢失,这仅仅是因为这些文件未包含在原始WAR文件中。
您需要将它们存储在webapp的deploy文件夹之外的其他固定路径下的某个位置/var/webapp/uploads。您不应使用相对路径或getRealPath()在其File周围创建对象。只需使用固定路径即可。您始终可以将固定路径配置为上下文参数设置,VM参数,属性文件设置甚至JNDI条目。
/var/webapp/uploads
getRealPath()
File
然后,要将其提供给万维网,只需将该路径作为另一个docroot添加到服务器配置中即可。目前尚不清楚您使用的是哪台服务器,但是在Tomcat中,只需在上添加另一台服务器<Context>即可server.xml。
<Context>
server.xml