Tomcat配置虛擬路徑,使上傳檔案與伺服器及工程檔案分離開
使用Tomcat虛擬路徑可以達到一個怎樣的效果呢?簡單說你可以把上傳的檔案放在你想發的任何一個地方,同時可以自己區分檔案的型別,圖片檔案專門放一個地方,壓縮包檔案放另一個地方。
其實如何配置非常簡單,這裡以window環境來說明!
首先找到tomcat目錄下conf目錄下的server.xml檔案
在server.xml檔案中找到<Host></Host>
然後在其中加上這兩句
<Context path="/demo/file" docBase="D:\demo\File\file"></Context>
<Context path="/demo/image" docBase="D:\demo\File\image"></Context>
解釋下這兩句話的意義
以tomcat在本機跑為例 一般是http://localhost:8080
當你訪問http://localhost:8080/demo/file/xxx.zip或者是http://localhost:8080/demo/image/xxx.jpg的時候,tomcat就會把請求轉發,去請求tomcat所在的物理機上的D盤下D:\demo\File\file下的xxx.zip檔案和xxx.jpg檔案
當檔案上傳的時候只需要把相應的檔案存放到相應的目錄中在資料庫中存放檔案的路徑。這裡最好在資料庫中存放xxx.zip 或者xxxx.jpg這樣的檔名
為什麼?
這樣更方便伺服器遷移!比方說你tomcat伺服器需要切換到另一臺物理機上,那麼原先存放在資料庫中的全地址就不可以用了。所以,比較好的方法是 伺服器地址資訊可以使用配置檔案來管理,請求檔案的全地址就後臺拼裝好即可,這樣就算要做遷移 ,也只是改改配置檔案,把檔案拷貝一份到新的物理機上,其他無需改!
還有一點需要注意下:
我們在做測試的時候,開發工具都是使用Eclipse,Eclipse有個比較噁心的地方就是每次重新啟動tomcat的時候會把tomcat中的配置資訊重置一遍!所以導致看不到效果!稍微注意下。
以上純粹個人愚見,僅供參考!
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 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
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/demo/file" docBase="D:\demo\File\file"></Context>
<Context path="/demo/image" docBase="D:\demo\File\image"></Context>
</Host>