今天TomCat在重启的时候,忽然发现自己上传的文件找不到了,于是找了找,发现在TomCat重启的时候,项目会重新部署,而此时开发工具中是没有那些上传的文件的,那些原本上传的文件就不见了,上传文件路径最好设置webapps之外,可以在webapps并行的目录下,建一个upload文件,专门存储应用上传的文件.当然上测试环境或者生产环境就不会了~直接上传到tomact下对于小文件小频率的还可以,不过一般不会直接上传的tomact下!
注意,TomCat的工具Clean之后同样会删除之前上传的文件,建议还是在webapps文件夹外面新建一个文件来存储上传的文件
第二种方案
先说解决办法吧,后面在分析:
1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2.修改/tomcat/conf/web.xml文件:
- <servlet>
- <servlet-name>default</servlet-name>
- <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
- <init-param>
- <param-name>debug</param-name>
- <param-value>0</param-value>
- </init-param>
- <init-param>
- <param-name>listings</param-name>
- <param-value>true</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet
3.修改/tomcat/conf/server.xml文件:
- <Host name="localhost" appBase="webapps"
- unpackWARs="true" autoDeploy="true"
- xmlValidation="false" xmlNamespaceAware="false">
-
- <!-- SingleSignOn valve, share authentication between web applications
- Documentation at: /docs/config/valve.html -->
-
-
-
-
- <!-- Access log processes all example.
- Documentation at: /docs/config/valve.html -->
- <!--
- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
- prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
- -->
- <Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>
-
- </Host>
分析:
重新redeploy的时候, tomcat 会同步你本地的文件 ,因为本地没有相应的文件夹导致文件丢失。
这只是在开发过程中会遇到的问题 实际应用中 tomcat 只会 startup.bat/sh shutdown.bat/sh
我们这样做,其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到工程了,
上传的图片就不会仅仅只在/tomcat/webapps/目录,而直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!