隱藏form表單下載檔案
阿新 • • 發佈:2019-01-04
下載檔案操作
java contorller程式碼
@RequestMapping ("/downloadZIPFile") @ResponseBody public void downloadZIPFile (HttpServletRequest request, HttpServletResponse response) { InputStream in = null; OutputStream out = null; try { request.setCharacterEncoding ("utf-8"); String filePath = request.getParameter ("filePath");//獲得檔案路徑 String fileName = request.getParameter ("fileName");//獲得要下載的檔名 File file = new File (filePath); response.setHeader ("Content-type", "text/html;charset=UTF-8"); response.setCharacterEncoding ("utf-8");//設定編碼集,檔名不會發生中文亂碼 response.setHeader ("Content-Disposition", "attachment;filename=" + fileName); in = new FileInputStream (file); out = response.getOutputStream (); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read (buffer)) > 0) { out.write (buffer, 0, len); } } catch (Exception e) { if (e instanceof IOException) { e.printStackTrace (); _logger.error ("檔案下載發生異常!", e); } else if (e instanceof UnsupportedEncodingException) { e.printStackTrace (); _logger.error ("設定編碼格式發生異常!", e); } else { e.printStackTrace (); _logger.error ("檔案下載發生異常!", e); } } finally { try { in.close (); out.flush (); out.close (); } catch (IOException e) { e.printStackTrace (); } } }
js程式碼
//我這是點選datagrid的某一行,先生成檔案,再下載檔案的,所以有了檔名與路徑;
function downloadFile(actoinURL,filePath,fileName){ var form = $("<form>"); $('body').append(form); form.attr('style','display:none'); form.attr('target',''); form.attr('method','post'); form.attr('action',actoinURL);//下載檔案的請求路徑 var input1 = $('<input>'); input1.attr('type','hidden'); input1.attr('name','filePath'); input1.attr('value',filePath); form.append(input1); var input2 = $('<input>'); input2.attr('type','hidden'); input2.attr('name','fileName'); input2.attr('value',fileName); form.append(input2); form.submit(); };
對了,我在網上查過,說是ajax不能做下載檔案操作!