[Servlet&JSP] Chap 12. 파일 다운로드 로직(MVC2 패턴)

김승현·2021년 12월 14일
0
  1. fileList.jsp

    • 다운로드 버튼 누르면 해당 파일 번호(input type="hidden")를 요청값으로 FileDownloadServlet(/file/fileDownload.do)로 이동
  2. FileDownloadServlet(/file/fileDownload.do)

    • 파일 번호, 유저ID 가져오기

    • 2개 의 값으로 해당 정보를 찾는 비즈니스 로직 처리( <->Service <-> DAO)

    • 리턴 값에 따라 로직 처리

      • null : error.jsp로 이동
      • !null : 다운로드 처리 로직
    • 다운로드를 하려면 처리해야 하는 로직

      • File객체로 연결
      1. 사용자의 브라우저가 다운로드를 받을 수 있도록 변경
        response.setContentType("application/octest-stream");

      2. 보내고자 하는 파일의 사이즈 설정
        response.setContentLength((int) file.length());

      3. 보내고자 하는 파일 이름 변경
        파일 이름을 UTF-8 인코딩 방식에서 ISO-8859-1로 변경
        String fileName = new String(fd.getOriginalFileName().getBytes(), "ISO-8859-1");
        response를 통해서 보내고자 하는 파일의 이름을 위에서 인코딩한 파일 이름으로 변경해서 전달
        response.setHeader("Content-Disposition", "attachement;filename=" + fileName);

      4. 실제 파일이 가지고 있는 데이터 전달
        FileInputStream fIn = new FileInputStream(file);
        ServletOutputStream out = response.getOutputStream();

        데이터를 4KByte씩 쪼개서 보내기
        byte[] outputByte=new byte[4096];

        while(fIn.read(outputByte, 0, 4069) != -1){
        out.write(outputByte,0,4069);
        }

        스트림 연결 종료
        fIn.close();
        out.flush(); // 스트림을 한번 깨끗하게 지워라
        out.close();

profile
개발자로 매일 한 걸음

0개의 댓글