【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)
2016-05-06 13:40
721 查看
欲实现的功能目标:当点击下图的导出数据文件时弹出文件下载框,默认csv格式,用户自定义下载的本地路径
遇到的问题:
1.项目之前做过一次下载,但是是使用了本地文件模板。用输入流读取文件模板,插入数据,以输出流输出,弹出下载框下载。而这次的情况是不能在后台指定本地文件路径,也就是无法读取模板文件,直接将数据库查询出的数据写成指定格式并供用户选择地址下载。省去输入流读取本地文件一环。
2.下载框始终无法弹出,而是直接在页面显示数据。
解决:
1.
2.下载框不弹出,文件内容在网页直接显示的原因是请求方式有问题。下面代码中的
遇到的问题:
1.项目之前做过一次下载,但是是使用了本地文件模板。用输入流读取文件模板,插入数据,以输出流输出,弹出下载框下载。而这次的情况是不能在后台指定本地文件路径,也就是无法读取模板文件,直接将数据库查询出的数据写成指定格式并供用户选择地址下载。省去输入流读取本地文件一环。
2.下载框始终无法弹出,而是直接在页面显示数据。
解决:
1.
/** * 导出CSV数据 * @return 数据 */ @RequestMapping(value = "dataExport",method = RequestMethod.POST) public void dataExport(HttpServletResponse response) throws Exception{ //查询出需要打印的数据 List<DsPrintTask> list=sc182211Logic.findDataExport(); //设置下载弹出框 response.setContentType("application/csv;charset=gbk"); response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("打印标签.csv", "UTF-8")); //新建打印输出对象 PrintWriter out = response.getWriter(); out.write("任务编码,操作码,阅读码,品牌名, 等级名"+"\n"); for(DsPrintTask s:list){ out.write(s.getPrintTaskId()+","+s.getOperateBar()+","+s.getReadBar()+","+s.getBrandName()+","+s.getGradeName()+"\n"); }
2.下载框不弹出,文件内容在网页直接显示的原因是请求方式有问题。下面代码中的
$("#main-content").postUrl(Main.contextPath + "/SC182211/dataExport");是用的公司框架里自己封装的JS方法,使用这个会造成下载框不弹出的问题。于是使用后面的form表单提交方法
$("#SC182211_EXPORT").click(function(){ // $("#main-content").postUrl(Main.contextPath + "/SC182211/dataExport"); var form = $("<form>"); //定义一个form表单 form.attr('style', 'display:none'); //在form表单中添加查询参数 form.attr('target', ''); form.attr('method', 'post'); form.attr('action', "/msk-web/SC182211/dataExport"); var input1 = $('<input>'); input1.attr('type', 'hidden'); input1.attr('name', 'strUrl'); $('body').append(form); //将表单放置在web中 form.append(input1); //将查询参数控件提交到表单上 form.submit(); });
相关文章推荐
- java.lang.String.indexOf()方法
- 4、Ajax与Java交互的案例
- springmvc错误java.lang.IllegalArgumentException
- Java线程专栏文章汇总
- spring-data-jpa 中,如果使用了one-to-many , many-to-one的注释,会在Jackson进行json字符串化的时候出现错误
- 3、在Ajax于Java的交互过程中,加入加载图片
- Spring框架的搭建
- 常见快捷键eclipse
- spring 学习
- 2、Ajax与Java通过POST方式交互
- java底层知识(4)--伪共享
- Windows7配置Java环境变量
- Java 多线程
- springmvc Rest 风格的 CRUD
- Java代码实现SHA1加密
- Springmvc + FastJson
- SpringMVC 整合fastjson
- Java类的加载过程
- 出现的问题 和 错误java.io.IOException: tmpFile.renameTo(classFile) failed
- Storm Spark Scala 混合代码快速编译打包jar方式,然后java风格使用(朋友咨询)