我知道有2种方法:
1、超链接下载(不介绍)
2、servlet下载
通过Servlet下载文件的原理是通过servlet读取目标程序,将资源返回客户端
servlet:DownServlet
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = request.getParameter("filename");
System.out.println(filename);
//设置文件MIME类型
response.setContentType(getServletContext().getMimeType(filename));
//设置Content-Disposition
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//读取目标文件,通过response将目标文件写到客户端
//获取目标文件的绝对路径
// String fullFileName = getServletContext().getRealPath("/models/" + filename);
//System.out.println(fullFileName);
String fullFileName = getServletContext().getRealPath("/")+"/static/models/" + filename;
//读取文件
InputStream in = new FileInputStream(fullFileName);
OutputStream out = response.getOutputStream();
//写文件
int b;
while((b=in.read())!= -1)
{
out.write(b);
}
in.close();
out.close();
}
Html 链接请求
<a href="${ctx}/downFile/model?filename=cityFreightPrice.xlsx" class="btn btn-add btn-success pull-right">下载导入模板</a>
web.xml配置
<servlet>
<servlet-name>downFile</servlet-name>
<servlet-class>com.dm.web.common.servlet.DownServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>downFile</servlet-name>
<url-pattern>/downFile/model</url-pattern>
</servlet-mapping>