zoukankan      html  css  js  c++  java
  • 【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)

    欲实现的功能目标:当点击下图的导出数据文件时弹出文件下载框,默认csv格式,用户自定义下载的本地路径

    遇到的问题:

    1.项目之前做过一次下载,但是是使用了本地文件模板。用输入流读取文件模板,插入数据,以输出流输出,弹出下载框下载。而这次的情况是不能在后台指定本地文件路径,也就是无法读取模板文件,直接将数据库查询出的数据写成指定格式并供用户选择地址下载。省去输入流读取本地文件一环。

    2.下载框始终无法弹出,而是直接在页面显示数据。

    解决:

    1.

     1 /**
     2      * 导出CSV数据
     3      * @return 数据
     4      */
     5     @RequestMapping(value = "dataExport",method = RequestMethod.POST)
     6     public void dataExport(HttpServletResponse response) throws Exception{
     7 
     8         //查询出需要打印的数据
     9         List<DsPrintTask> list=sc182211Logic.findDataExport();
    10 
    11         //设置下载弹出框
    12         response.setContentType("application/csv;charset=gbk");
    13         response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("打印标签.csv", "UTF-8"));15 
    16         //新建打印输出对象
    17         PrintWriter out = response.getWriter();
    18 
    19         out.write("任务编码,操作码,阅读码,品牌名,    等级名"+"
    ");
    20         for(DsPrintTask s:list){
    21             out.write(s.getPrintTaskId()+","+s.getOperateBar()+","+s.getReadBar()+","+s.getBrandName()+","+s.getGradeName()+"
    ");
    22         }

    2.下载框不弹出,文件内容在网页直接显示的原因是请求方式有问题。下面代码中的

    $("#main-content").postUrl(Main.contextPath + "/SC182211/dataExport");是用的公司框架里自己封装的JS方法,使用这个会造成下载框不弹出的问题。于是使用后面的form表单提交方法
     1 $("#SC182211_EXPORT").click(function(){
     2            // $("#main-content").postUrl(Main.contextPath + "/SC182211/dataExport");
     3 
     4                 var form = $("<form>");   //定义一个form表单
     5                 form.attr('style', 'display:none');   //在form表单中添加查询参数
     6                 form.attr('target', '');
     7                 form.attr('method', 'post');
     8                 form.attr('action', "/msk-web/SC182211/dataExport");
     9 
    10                 var input1 = $('<input>');
    11                 input1.attr('type', 'hidden');
    12                 input1.attr('name', 'strUrl');14                 $('body').append(form);  //将表单放置在web中
    15                 form.append(input1);   //将查询参数控件提交到表单上
    16                 form.submit();
    19         });
  • 相关阅读:
    Rx
    linux rpm 安装包制作
    kamctl start
    dedicated bearer
    Kamailio
    EPC sequence
    TD-LTE技术原理与系统设计
    SS7
    SCTP
    GTP
  • 原文地址:https://www.cnblogs.com/dflmg/p/5465108.html
Copyright © 2011-2022 走看看