티스토리 뷰

Daylogs/Java

Download Servlet

ohgyun 2009. 9. 2. 15:20
발생일: 2009.09.02

문제:
다운로드 버튼을 누르면 원하는 파일(지금은 jpg 파일)을 다운로드 받을 수 있도록 하고 싶다.
Download 하는 서블릿을 만들어서 응답으로 해당 파일을 뿌려주면 될 것 같은데,
어떻게 하면 될까?

해결책:
브라우저는 요청 후 돌아오는 서버의 응답을 종류에 따라 적합한 형태로 보여준다.
서버는 응답 헤더에 content-type 을 설정해 줌으로써 응답의 종류가 어떤 것인지 알려준다.
(content-type은 MIME에 정의된 메세지 타입 표준이다.)

각 브라우저는 응답 헤더에 있는 content-type 를 파악하여 적합한 형태로 보여주게 된다.
예를 들어, content-type 이 text/plain 라면 일반 문자로 보여주고, image/gif 와 같은 형태라면 그림으로 보여주는 것이다.

위와 같은 상황처럼 jpg 를 브라우저에서 바로 뿌려주는 게 아니라,
브라우저에서 파일로 다운로드 받게 하려 한다면 응답 헤더를 수정해주면 되겠다.


그에 앞서 일단 전체적인 개념 정리를 위해 자바서비스넷의 첨부파일 클릭 시 저장하는 기능 포스트를 읽어보자.


파일을 다운로드 받게 하기 위해선 서블릿에서 응답을 주기 전에 응답 헤더를

        response.addHeader("Content-Type", "application/octet-stream");
        response.addHeader("Content-Disposition", "attachment; filename=" + 파일명);

와 같은 형태로 변경해주면 된다.


상세한 예제는 JSPWiki: Making A Download Servlet 를 참고하자.

* 참고
검색해보니 그 외에 다운로드 서블릿을 jar로 만들어 배포하기도 한다.


반응형
댓글
공지사항