서버에 저장되어있는 파일을 다운받는 소스입니다.
스프링을 사용하신다면 소스만 확인하시면 될 듯 합니다.
javascript소스와 controller소스입니다.
javascript 소스
1 2 3 4 5 6 7 8 | $("#download").click(function(){ var filePath = "C:/tmp/test.txt"; var fileName = "test.txt"; location.href = "/contract/fileDownload?filePath="+filePath+"&fileName="+fileName; }); |
controller 소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | @RequestMapping(value="/contract/fileDownload") public void fileDownload( HttpServletResponse response, HttpServletRequest request, @RequestParam Map<String, String> paramMap) { String path = paramMap.get("filePath"); //full경로 String fileName = paramMap.get("fileName"); //파일명 File file = new File(path); FileInputStream fileInputStream = null; ServletOutputStream servletOutputStream = null; try{ String downName = null; String browser = request.getHeader("User-Agent"); //파일 인코딩 if(browser.contains("MSIE") || browser.contains("Trident") || browser.contains("Chrome")){//브라우저 확인 파일명 encode downName = URLEncoder.encode(fileName,"UTF-8").replaceAll("\\+", "%20"); }else{ downName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); } response.setHeader("Content-Disposition","attachment;filename=\"" + downName+"\""); response.setContentType("application/octer-stream"); response.setHeader("Content-Transfer-Encoding", "binary;"); fileInputStream = new FileInputStream(file); servletOutputStream = response.getOutputStream(); byte b [] = new byte[1024]; int data = 0; while((data=(fileInputStream.read(b, 0, b.length))) != -1){ servletOutputStream.write(b, 0, data); } servletOutputStream.flush();//출력 }catch (Exception e) { e.printStackTrace(); }finally{ if(servletOutputStream!=null){ try{ servletOutputStream.close(); }catch (IOException e){ e.printStackTrace(); } } if(fileInputStream!=null){ try{ fileInputStream.close(); }catch (IOException e){ e.printStackTrace(); } } } } |
Maven Build java.lang.NoClassDefFoundError 처리 (2) | 2016.11.22 |
---|---|
Spring 파일 업로드 저장 (0) | 2016.09.20 |
[mybatis] foreach를 이용한 다중 insert (0) | 2016.08.31 |
Mybatis, mysql 반복 쿼리 실행 (insert), foreach (0) | 2016.08.18 |
부트스트랩 페이징, 페이지네이션 (Bootstrap Pagination), 페이징 예제 (0) | 2016.07.29 |
댓글 영역