Tomcat 重啟 上傳文件消失
開發模式
- 首先開發者模式下,部署在 Tomcat 上沒有什么好的辦法,否則無法調試
- 除非使用絕對路徑,缺點:不同的操作系統路徑不同,自動設置
- 對於圖片上傳一般我們使用圖片服務器,上傳 CDN中
- 一般獲取的路徑都是
request.getSession().getServletContext().getRealPath("/upload/" + filename)
部署模式
-
當然在運行的過程中,我們可以設置 Tomcat 來達到上傳文件
思路:
清空
/tomcat/webapps/
目錄項目文件修改
/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>
修改
/tomcat/conf/server.xml
文件-
<Host name="localhost" appBase="webapps" uppackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <!-- 注釋以下代碼 --> <Valve vlassName="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> <context docBase="D:\project\myProject\…\WebRoot" path="/"> </Host>
原理:
D:\project\myProject\...\WebRoot
這個路徑是項目的 WEB 根目錄,設置以后上傳時就會在 upload 文件夾下上傳文件- 若在 eclipse 中點來點去的部署項目,就是等於把 原本項目 都復制到 /tomcat/webapps/ 目錄下,只要重新部署或清除緩存,上傳的文件都會煙消雲散
- 重新部署會先刪除原本項目的目錄