重启tomcat上传文件丢失—tomcat在本机导致,实际部署是不会出现上传文件丢失的

吼吼,我遇到的问题是这样的……
我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个。
然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件。

但是,重启项目,或者清理缓存之后,图片和文件夹就会自动被删除,不见了。


先说解决办法吧,后面在分析:

1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2.修改/tomcat/conf/web.xml文件:

  1. <servlet>  
  2.         <servlet-name>default</servlet-name>  
  3.         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>  
  4.         <init-param>  
  5.             <param-name>debug</param-name>  
  6.             <param-value>0</param-value>  
  7.         </init-param>  
  8.         <init-param>  
  9.             <param-name>listings</param-name>  
  10.             <param-value>true</param-value>  
  11.         </init-param>  
  12.         <load-on-startup>1</load-on-startup>  
  13.     </servlet  
<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文件:

  1. <Host name=“localhost”  appBase=“webapps”  
  2.             unpackWARs=“true” autoDeploy=“true”  
  3.             xmlValidation=“false” xmlNamespaceAware=“false”>  
  4.    
  5.         <!– SingleSignOn valve, share authentication between web applications  
  6.              Documentation at: /docs/config/valve.html –>  
  7.         <!– 
  8.         <Valve className=”org.apache.catalina.authenticator.SingleSignOn” /> 
  9.         –>  
  10.    
  11.         <!– Access log processes all example.  
  12.              Documentation at: /docs/config/valve.html –>  
  13.         <!–  
  14.         <Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs”    
  15.                prefix=“localhost_access_log.” suffix=“.txt” pattern=“common” resolveHosts=“false”/>  
  16.         –>  
  17. <!—-><Context path=“/ser” docBase=“D:\project\myProject\editor\WebRoot”></Context>  
  18. <!–<Context path=”/mvc” docBase=”D:\project\myProject\你的项目名\WebRoot”></Context>–>  
  19.       </Host>  
<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 -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- 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>
<!--<Context path="/mvc" docBase="D:\project\myProject\你的项目名\WebRoot"></Context>-->
      </Host>

分析:

重新redeploy的时候,  tomcat 会同步你本地的文件 ,因为本地没有相应的文件夹导致文件丢失。
这只是在开发过程中会遇到的问题 实际应用中 tomcat 只会 startup.bat/sh shutdown.bat/sh
我们这样做,其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到工程了,
上传的图片就不会仅仅只在/tomcat/webapps/目录,而直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!

            </div>
吼吼,我遇到的问题是这样的……
我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个。
然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件。

但是,重启项目,或者清理缓存之后,图片和文件夹就会自动被删除,不见了。


先说解决办法吧,后面在分析:

1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2.修改/tomcat/conf/web.xml文件:

  1. <servlet>  
  2.         <servlet-name>default</servlet-name>  
  3.         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>  
  4.         <init-param>  
  5.             <param-name>debug</param-name>  
  6.             <param-value>0</param-value>  
  7.         </init-param>  
  8.         <init-param>  
  9.             <param-name>listings</param-name>  
  10.             <param-value>true</param-value>  
  11.         </init-param>  
  12.         <load-on-startup>1</load-on-startup>  
  13.     </servlet  
<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文件:

  1. <Host name=“localhost”  appBase=“webapps”  
  2.             unpackWARs=“true” autoDeploy=“true”  
  3.             xmlValidation=“false” xmlNamespaceAware=“false”>  
  4.    
  5.         <!– SingleSignOn valve, share authentication between web applications  
  6.              Documentation at: /docs/config/valve.html –>  
  7.         <!– 
  8.         <Valve className=”org.apache.catalina.authenticator.SingleSignOn” /> 
  9.         –>  
  10.    
  11.         <!– Access log processes all example.  
  12.              Documentation at: /docs/config/valve.html –>  
  13.         <!–  
  14.         <Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs”    
  15.                prefix=“localhost_access_log.” suffix=“.txt” pattern=“common” resolveHosts=“false”/>  
  16.         –>  
  17. <!—-><Context path=“/ser” docBase=“D:\project\myProject\editor\WebRoot”></Context>  
  18. <!–<Context path=”/mvc” docBase=”D:\project\myProject\你的项目名\WebRoot”></Context>–>  
  19.       </Host>  
<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 -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- 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>
<!--<Context path="/mvc" docBase="D:\project\myProject\你的项目名\WebRoot"></Context>-->
      </Host>

分析:

重新redeploy的时候,  tomcat 会同步你本地的文件 ,因为本地没有相应的文件夹导致文件丢失。
这只是在开发过程中会遇到的问题 实际应用中 tomcat 只会 startup.bat/sh shutdown.bat/sh
我们这样做,其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到工程了,
上传的图片就不会仅仅只在/tomcat/webapps/目录,而直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!

            </div>

猜你喜欢

转载自blog.csdn.net/weixin_39805338/article/details/80855534