게시판11) 파일 다운

  • 첨부파일을 누르면 다운로드가 실행되게 한다.

    1204sp1

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 게시판 포스팅 시리즈 ◇

  1. Spring 과 DB 연결하기
  2. 회원 가입 화면 구성
  3. ID 중복 확인 하기
  4. 로그인 페이지 만들기
  5. 게시판 화면 구성하기
  6. 글 쓰기 기능 구현
  7. 글 확인 기능 구현
  8. 글 수정 기능 구현
  9. 게시판 페이징
  10. 파일 첨부 기능
  11. 파일 다운 기능 - 현재 글
  12. MIME 타입
  13. 글 수정시 파일 변경

© 2018. All rights reserved.

Powered by Hydejack v8.5.2