首先提供下我的下载页面
那么要实现这么一种下载的话,tomcat的配置起到了关键性作用
第一:配置虚拟目录
在tomcat/config/server.xml中找到<host>标签,在中间加上
<Context path="/myweb" docBase="E:\myweb" debug="0" reloadable="true" crossContext="true">
</Context>
其中myweb为虚拟目录,即运行起项目后,我们的链接应该不含项目直接为:http://ip:port/myweb
这样的话实际找到文件时才会自动映射到真实的磁盘目录:D:\myweb
关于虚拟目录配置更多请参考我之前的文章内容
第二:为中文文件下载做支持
由于WEB网页上下载中文名称文件找到真实文件后会在地址上出现乱码,导致无法下载,这样,就要在
tomcat/config/server.xml中找到
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" />
为这个标签加上一个属性: URIEncoding="utf-8"
关于更多链接中文文件下载请参考我之前的文章内容
第三:配置下载文件的文件类型
我们做的这些操作都是在电脑上进行操作,所以服务器tomcat一定要配置好下载类型,这样远端客户端才能正常下载
找到tomcat/config/web.xml在众多mime-mapping中加上
<mime-mapping>
<extension>rar</extension>
<mime-type>application/rar</mime-type>
</mime-mapping>
这里我只是加上了rar类型,可能还有许多类型,这得你自己配置了,不过web.xml中已经配置好了大多数文件的mime类型
具体示例【前提是在tomcat中上面三点都配置好了】:
index.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="refresh" content="0; url=index.jsp" />
</head>
</html>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.io.File"%>
<%
File file=new File("E:/myweb");
File[] files=file.listFiles();
request.setAttribute("files",files);
request.getRequestDispatcher("/download.jsp").forward(request,response);
%>
download.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head><title>下载页面</title></head>
<body>
<h3>请点击下载下面的文件【或者通过右键"目标另存为"的方式进行下载】</h3><hr/>
<table border="1" bordercolor="black" cellpadding="5" cellspacing="5">
<c:forEach items="${files}" var="file">
<tr>
<td>${file.name}</td><td><a href="http://192.168.1.103:8080/myweb/${file.name}">下载</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>