在開發項目時,有時候需要用到上傳功能,比如頭像上傳等,其文件會保存到伺服器中。但是我發現在用eclipse做項目的過程中,每次重新部署項目,原來上傳的文件就會丟失。 其原因是因為每次項目修改後,eclipse會把我們放在工作空間workspace中的這個項目拷貝到伺服器下(如tomcat的webap ...
在開發項目時,有時候需要用到上傳功能,比如頭像上傳等,其文件會保存到伺服器中。但是我發現在用eclipse做項目的過程中,每次重新部署項目,原來上傳的文件就會丟失。
其原因是因為每次項目修改後,eclipse會把我們放在工作空間workspace中的這個項目拷貝到伺服器下(如tomcat的webapps目錄下)。因為之前上傳的文件都存在之前的部署的項目里,所以新部署的項目會直接把原項目覆蓋掉。原來上傳的文件就都沒有了。
解決方案一:
在tomcat伺服器的webapps下單獨建立一個專門存放資源文件的文件夾(xxx)
在項目里上傳文件上傳到此文件夾里就可以了。
要請求文件可以直接用http://localhost:8081/xxx/xxxxx.jpg
解決方案二:
用虛擬路徑的方式配置一個空項目。在涉及上傳的時候直接把文件寫到這個配置了虛擬路徑的項目里,最終文件會保存到虛擬路徑對應的物理盤符
上。如果是tomcat伺服器,在tomcat的server.xml裡面配置。但是在實際操作過程中,發現server.xml也會被重寫。是因為eclipse工作空間中存在一個
叫Servers的項目,它裡面有一個叫server.xml的文件,在部署項目時,它會把這個文件覆蓋掉tomcat伺服器中。所以,我們可以把如下配置遷移到
eclipse下的Servers項目下進行。
配置在HOST下
1 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"> 2 <!-- 虛擬路徑配置 --> 3 < Context docBase="D://objimgs//upload" path="/objimgs"/> 4 </Host>
請求http://www.***.com/objimags/文件名.jpg的時候,會自動到D://objimgs//upload目錄下找相關文件