通过URL请求tomcat服务器直接下载文件

作者:xcbeyond
疯狂源自梦想,技术成就辉煌!微信公众号:《程序猿技术大咖》号主,专注后端开发多年,拥有丰富的研发经验,乐于技术输出、分享,现阶段从事微服务架构项目的研发工作,涉及架构设计、技术选型、业务研发等工作。对于Java、微服务、数据库、Docker有深入了解,并有大量的调优经验。 







 从一个服务器上下载文件,是很常见的情况。通常我们想通过URL来访问直接下载一个文件,对于Tomcat服务器而言,是非常简单的,Tomcat本身就是作为一个web服务器的,通过简单的配置就可以实现。

配置如下:

1、在tomcat服务器上的server.xml(tomcat\conf\)的文件中添加下面一行(如已存在,只需修改下内容):

<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是指服务器上的文件地址,path是指URL访问时的路径。

2、重启tomcat,使用URL直接下载。

例如:下载地址  http://服务器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"/>