【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("任務編碼,操作碼,閱讀碼,品牌名,    等級名"+"\n");
20         for(DsPrintTask s:list){
21             out.write(s.getPrintTaskId()+","+s.getOperateBar()+","+s.getReadBar()+","+s.getBrandName()+","+s.getGradeName()+"\n");
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         });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM