作为一个误打误撞进入程序猿队伍的“小学生”
想通过这种形式记录下自己在开发学习中遇到的问题和见解
今天在实际开发中遇到一个导出excel的功能,为此来写一篇文档记录一下。
java在实现文档的下载主要流程是这样的:
1.先将文件生成保存在服务器
2.将服务器上的文件下载到客户端(本文介绍内容)
先看看实际的效果
页面显示效果 下载效果 实际下载文件html页面的实现
<a class="layui-btn layui-btn" style="float:right;background-color:red" href="/download">导出查询数据Excel</a>
@RequestMapping("/download")
public void download(HttpServletResponse res) {
String fileName ="测试文档下载.xls";
res.setHeader("content-type","application/octet-stream");
res.setContentType("application/octet-stream");
try {
//utf-8的编码格式可以防止文件下载时候的默认文件名乱码
res.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] buff =new byte[1024];
BufferedInputStream bis =null;
OutputStream os =null;
try {
os = res.getOutputStream();
//通过fileUrl+ fileName的服务器上的文件绝对路径来获取要下载的文件
bis =new BufferedInputStream(new FileInputStream(new File(fileUrl+ fileName)));
int i = bis.read(buff);
while (i != -1) {
os.write(buff,0, buff.length);
os.flush();
i = bis.read(buff);
}
bis.close();
os.close();
}catch (IOException e) {
e.printStackTrace();
}finally {
if (bis !=null) {
try {
bis.close();
}catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("success");
}
注:文中有错误或者不准确的地方望大佬指正!!!
网友评论