其他分享
首页 > 其他分享> > Ext下载文件

Ext下载文件

作者:互联网

项目中前台用的是Ext JS,要从数据库中查询数据并导出为Excel表格

对此研究了下,代码如下:

前台代码:

 1         /**
 2          * 进行下载文件(form方式)
 3          */
 4         _downloadDraft:function () {
 5             var formId = 'form-'+Ext.data.IdGenerator.get('uuid').generate();//下载表单的id
 6             if (!Ext.fly(formId)) {      //如果不存在一个id为formId的form表单,则执行下面的操作
 7 
 8                 //下面代码是在创建一个表单以及添加相应的一些属性
 9                 var downForm = document.createElement('form');  //创建一个form表单
10                 downForm.id = formId;   //该表单的id为formId
11                 downForm.name = formId;  //该表单的name属性为formId
12                 downForm.className = 'x-hidden'; //该表单为隐藏的
13                 downForm.action = 'pledgeRepoDlgQuoteController/downloadDraft.action'; //表单的提交地址
14                 downForm.method = 'post';  //表单的提交方法
15 
16                 document.body.appendChild(downForm); //将form表单追加到body里面
17             }
18             Ext.fly(formId).dom.submit(); //调用form表单的submit方法,提交表单,从而开始下载文件
19 
20             //因为表单已经提交了,文件也开始下载了,所以过河拆桥,把表单移除掉
21             //如果存在id为formId的表单,则将它移除掉
22             if (Ext.fly(formId)) {
23                 document.body.removeChild(downForm);
24             }
25         }

或者:

1          /**
2          * 进行下载文件(iframe方式)
3          */
4         _downloadDraft:function () {
5             var elemIF = document.createElement("iframe");
6             elemIF.src = 'pledgeRepoDlgQuoteController/downloadDraft.action';
7             elemIF.style.display = "none";
8             document.body.appendChild(elemIF);
9         }

后台代码:

 1     @RequestMapping("/downloadDraft.action")
 2     public String downloadDraft( HttpServletRequest request, HttpServletResponse response) {
 3         logger.info("开始下载质押式回购对话报价草稿~~~");
 4         HSSFWorkbook hssfWorkbook =  this.pledgeRepoDlgDraftService.exportDraft();
 5         String fileName = "质押式回购对话报价草稿.xls";
 6         try {
 7             fileName = new String(fileName.getBytes("GBK"), "ISO8859-1");
 8             response.setHeader("Content-disposition", "attachement;filename="+fileName);
 9             response.setContentType("application/vnd.ms-excel");
10             OutputStream out =    response.getOutputStream();
11             hssfWorkbook.write(out);
12             out.close();
13             logger.info("结束下载质押式回购对话报价草稿~~~");
14         }catch (Exception e){
15             logger.info("下载质押式回购对话报价草稿中出现异常~~~");
16             e.printStackTrace();
17         }
18         return null;
19     }    

 

标签:文件,form,downloadDraft,formId,Ext,downForm,表单,下载
来源: https://www.cnblogs.com/thaipine/p/10826970.html