게시판11) 파일 다운
in Web Dev on Java Spring
첨부파일을 누르면 다운로드가 실행되게 한다.
boardDetail.jsp
controller의 download 메소드로 보내고 boardseq를 전달한다.
<tr> <th>첨부파일</th> <td><a href= "download?boardseq=${board.boardseq}" }>${board.originalfile}</a></td> </tr>
boardController
헤더 정보를 바꿔줘야한다.
//이건 헤더 정보를 바꾸는 것이다. try { response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(originalfile,"UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
파일을 읽어준다. board.getSavedfile()는 저장된 파일의 이름을 String으로 반환해준다.
String savedfile = board.getSavedfile(); String fullPath = uploadPath + "/"+savedfile; try { fin = new FileInputStream(fullPath); fout = response.getOutputStream(); FileCopyUtils.copy(fin, fout); fin.close(); fout.close(); }catch(IOException e) { e.printStackTrace(); }
전체코드
@RequestMapping("/download") public String download(int boardseq, HttpServletResponse response) { Board board = repository.boardDetail(boardseq); String originalfile = board.getOriginalfile(); //이건 헤더 정보를 바꾸는 것이다. try { response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(originalfile,"UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String savedfile = board.getSavedfile(); String fullPath = uploadPath + "/"+savedfile; //저장된 파일을 읽어서 내보냄. FileInputStream fin = null; ServletOutputStream fout =null; try { fin = new FileInputStream(fullPath); fout = response.getOutputStream(); FileCopyUtils.copy(fin, fout); fin.close(); fout.close(); }catch(IOException e) { e.printStackTrace(); } //화면 안바꾸고 그냥 있는 것. return null; }
◇ Spring 게시판 포스팅 시리즈 ◇