• java用spring实现文件下载


    今天是我第一博客文章,希望写出来的东西能让大家看明白,欢迎大家给我留言。

    html页面:

    <a href="#" onclick="downLoad()" class="download">下载</a>

    我用的ajax像后台发送的请求:

    /**文件下载*/
    function downLoad() {
      window.open(global_param.context_name+'/upload/fileddown');//此处我用ajax实现调用后台方法。
    }

    然后后台具体实现如下:

    /**
    * 文件下载
    */
    @Transactional
    @Override
    public String fileDown(HttpServletResponse response,HttpServletRequest request) throws Exception {
    String projectPath = request.getServletContext().getRealPath("/");//获取项目的根目录
    String path = projectPath+"/resources/execl/赠送分发.xlsx";//获取到文件exec表的位置,这个地址是你需要下载的文件路径,可以跟你自己的情况写
    File file=new File(path);//创建file对象
    String encoderstr = URLEncoder.encode(file.getName(), "UTF-8");//转字符
    response.setHeader("Content-Disposition", "attachment;filename=""+encoderstr + """);//这样转换后可以避免下载的时候是中文字符
    response.addHeader("Content-Length", "" + file.length());
    response.setContentType("application/x-msdownload;");
    response.setCharacterEncoding("UTF-8");
    OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
    InputStream inputStream = new FileInputStream(file);
    byte[] buffer = new byte[1024];
    int i = -1;
    while ((i = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer, 0, i);
    }
    outputStream.flush();
    outputStream.close(); //关闭文件流很关键
    return "success";
    }

    最后就写完了,希望能帮助到大家!

    时间,请带我像一条小溪流般,安静地流淌,汇入爱的海洋。
  • 相关阅读:
    Redis的高级应用——数据安全
    [转]C#多线程和线程池
    详解从面向接口编程到依赖注入
    Java Servlet 配置
    Java Servlet 3.0 新特性
    [转]C#中的委托和事件
    iReport5.6.0使用说明
    Visual Studio 2015 官方下载及密钥
    Java Swing 托盘闪烁Demo实例
    Win7 利用批处理文件结束进程
  • 原文地址:https://www.cnblogs.com/1246447850qqcom/p/3939362.html
Copyright © 2020-2023  润新知