♣ 파일 다운로드

◆ 파일 다운로드 알아야 할 내용

  • @Controller에서는 아무 말도 없으면 View를 반환한다.
  • 다운로드를 위해서는 View가 아니라 파일을 줘야 한다.(일반적이지 않다.)
  • View를 반환하지 않기 위해 @ResponseBody를 추가한다.
  • 파일의 정보와 내용을 직접 설정해서 반환해야 한다.(HTTP 헤더 + 바디)
  • 헤더와 바디를 직접 설정해서 반환하려면 ResponseEntity를 사용해야 한다.
  • 인증키를 주로 헤더에 첨부한다.
  • .body()를 사용하면 내용을 작성해서 첨부할 수 있다.
  • .bulid()를 사용할 수 있지만 내용을 입력하지 못한다.
  • 헤더의 파일 정보를, 바디의 파일 데이터를 보낸다.

    ◆ 실제 파일 다운로드 처리 메서드

  • 사용자에게 첨부파일 번호(attachmentNo)을 달라고 한다.
  • attachmentNo를 사용하여 DB를 조회한다.
  • <ByteArrayResource> : Byte 배열을 래핑(포장)한 클래스 이다.
    - 없으면 사용자에게 404 notFount를 반환하고 종료한다.
    - 있으면 실제 파일 데이터를 불러와야 한다.(single byte 입력)
    - Apache commons IO 라이브러리 사용
    - 헤더에 다음 정보를 설정한다.
    - 파일명(Content-Disposition)
    - 파일크기(Content-Length)
    - 파일유형(Content-Type)
    - 파일인코딩(Content-Encoding)
    - 바디에 파일의 실제 데이터를 첨부한 뒤 반환하면 스프링이 나머지는 처리한다.

◆ Apache commons IO 라이브러리 추가

-> 구글에 maven repository 검색
-> apache commons IO 라이브러리 검색
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency>
-> pom.xml에 코드 추가


  • header : 통신을 해석하는 도구이다.
  • body : 전송 방식에 따라 유무가 다르다.
    -GET 방식에는 없고 POST방식에 있다.
  • (주의!) 물리적인 경로는 jsp에 주소를 작성하면 안된다.
  • 컨트롤러를 사용하여 작성한 주소를 사용해야 한다.
profile
Backend Developer

0개의 댓글