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