文件下载---工具类
public class Util {
//定义日志对象
private Logger logger = Logger.getLogger(Util.class);
@RequestMapping("downfile")
public void downFile(HttpServletRequest request,HttpServletResponse response,String fileNname) throws IOException {
// 根据文件名称|文件路径获取 上下文的路径地址
String realPath = request.getServletContext().getRealPath(fileNname);
// 获取文件的长度
File file = new File(realPath);
long fileLength = file.length();
// 获取文件名称
String name = file.getName();
logger.info("文件名称*******"+name);
// 设置响应类型
response.setHeader("Content-Type", "application/octet-stream");
// 设置下载的类型的长度
response.setHeader("Content-Length", String.valueOf(fileLength));
// 设置以下载方式使用
response.setHeader("Content-Disposition",
"attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(name, "UTF-8"));
// 获取下载流对象
ServletOutputStream os = response.getOutputStream();
// 缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(os);
// 下载文件的缓冲输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
// 定义的缓冲区
byte buffer[] =new byte[1024];
// 定义读取的长度
int len=0;
// 循环读取
while((len=bis.read(buffer))!=-1) {
// 写入到响应的流中
bos.write(buffer, 0, len);
}
bis.close();
bos.close();
os.close();
}
}
页面调用
<a class="btn btn-info" href="${pageContext.request.contextPath}/util/downfile?fileNname=${l.url}">下载</a>