1. 程式人生 > >Tomcat配置虛擬路徑,使上傳檔案與伺服器及工程檔案分離開

Tomcat配置虛擬路徑,使上傳檔案與伺服器及工程檔案分離開

原文連結:https://my.oschina.net/pingdy/blog/381001 摘要: 現在一般的專案都可能會涉及檔案的上傳與下載,那如何管理這些檔案呢?做法各有千秋!今天我也分享下我是怎麼去管理這些檔案的!當然了,這樣的方式只適用於檔案量小的情況下!如果檔案數量非常龐大,那可以考慮一些開源的解決方案! 最初,我們會把一些檔案直接放置在伺服器中或者是直接放置在工程目錄中!這樣的好處是訪問檔案方便,但是也有弊端,個人認為維護性差原因可能有我們的工程可能會頻繁的更新,沒更新一次就得先保留一份資料,這樣是很繁瑣的!

使用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 &quot;%r&quot; %s %b" />
             <Context path="/demo/file" docBase="D:\demo\File\file"></Context>
             <Context path="/demo/image" docBase="D:\demo\File\image"></Context>
    </Host>