通過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"/>