通過URL請求tomcat服務(wù)器直接下載文件

作者:xcbeyond
瘋狂源自夢想,技術(shù)成就輝煌!微信公眾號:《程序猿技術(shù)大咖》號主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗,樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項目的研發(fā)工作,涉及架構(gòu)設(shè)計、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗。 







 從一個服務(wù)器上下載文件,是很常見的情況。通常我們想通過URL來訪問直接下載一個文件,對于Tomcat服務(wù)器而言,是非常簡單的,Tomcat本身就是作為一個web服務(wù)器的,通過簡單的配置就可以實(shí)現(xiàn)。

配置如下:

1、在tomcat服務(wù)器上的server.xml(tomcat\conf\)的文件中添加下面一行(如已存在,只需修改下內(nèi)容):

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">
        <Context path="/download" docBase="D:/download" debug="0" privileged="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"   -->
 </Host>

其中docBase是指服務(wù)器上的文件地址,path是指URL訪問時的路徑。

2、重啟tomcat,使用URL直接下載。

例如:下載地址  http://服務(wù)器IP:port/download/test.txt

 

注意:

解決包含中文文件名無法下載的問題:

    通過上面的配置,如果下載文件的文件名中帶中文,則將無法下載。需要添加tomcat的server.xml文件中URIEncoding="UTF-8"

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8081" URIEncoding="UTF-8"/>