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         });
  • 相关阅读:
    NYOJ 10 skiing DFS+DP
    51nod 1270 数组的最大代价
    HDU 4635 Strongly connected
    HDU 4612 Warm up
    POJ 3177 Redundant Paths
    HDU 1629 迷宫城堡
    uva 796
    uva 315
    POJ 3180 The Cow Prom
    POJ 1236 Network of Schools
  • 原文地址:https://www.cnblogs.com/dflmg/p/5465108.html
Copyright © 2011-2022 走看看