美文网首页
“小学生”日记:java实现文档下载功能的前后台

“小学生”日记:java实现文档下载功能的前后台

作者: 清酒不过半杯 | 来源:发表于2018-09-19 23:28 被阅读0次

    作为一个误打误撞进入程序猿队伍的“小学生”

    想通过这种形式记录下自己在开发学习中遇到的问题和见解

    今天在实际开发中遇到一个导出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");

    }

    注:文中有错误或者不准确的地方望大佬指正!!!

    相关文章

      网友评论

          本文标题:“小学生”日记:java实现文档下载功能的前后台

          本文链接:https://www.haomeiwen.com/subject/rwmwnftx.html