1. 程式人生 > >解決jsp上傳檔案,重啟tomcat後文件和資料夾自動刪除

解決jsp上傳檔案,重啟tomcat後文件和資料夾自動刪除

吼吼,我遇到的問題是這樣的......
我寫了一個圖片上傳的方法,上傳時,判斷沒有這個目錄就自動建立一個。
然後開始上傳圖片,能成功,能在伺服器找到資料夾和相應的檔案。

但是,重啟專案,或者清理快取之後,圖片和資料夾就會自動被刪除,不見了。

先說解決辦法吧,後面在分析:

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 -->
        <!--
        <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/目錄,而直接到了你的工程裡,
不管你怎樣重啟專案,或者清理快取,上傳的檔案依然存在!