java, spring

[Spring] 첨부파일의 다운로드

isaac.kim 2021. 8. 26.
728x90
반응형

[Spring] 첨부파일의 다운로드

이전 글

2021.08.26 - [Spring] - [Spring] 브라우저에서 파일 업로드 후 처리 (썸네일 처리 등)

2021.08.24 - [Spring] - [Spring] Ajax 파일 업로드 후, 업로드된 파일 데이터 반환

2021.08.24 - [Spring] - [Spring] 썸네일 이미지 생성

2021.08.24 - [Spring] - [Spring] 파일 업로드, 파일명 중복 방지를 위한 UUID 적용

2021.08.24 - [Spring] - [Spring] 년월일 폴더 생성, 날짜 폴더 생성

2021.08.24 - [Spring] - [Spring] 파일 확장자, 파일 사이즈 확인하여 파일 업로드 제한하기

2021.08.23 - [Spring] - [Spring] Ajax를 이용하는 파일 업로드

2021.08.22 - [Spring] - [Spring] 파일 업로드 설정하기 (xml방식, Java방식)

 

 

첨부파일의 다운로드는 서버에서 MIME 타입을 다운로드 타입으로 지정하고, 적절한 헤더 메시지를 통해 다운로드 이름을 처리합니다. 이미지와 달리 일반 파일들은 MIME 타입으로 고정됩니다.

 

UpdateController의 일부

ResponseEntity< >의 타입은 byte[ ] 등을 사용할 수 있으나, org.springframework.core.io.Resource 타입을 이용해서 요청한 파일을 서버에서 인식할 수 있는지 체크합니다.

 

http://localhost:8080/download?fileName=2021/08/25/T.png

 

서버 로그

서버에서 파일의 경로가 확인되면 ResponseEntity<>를 처리합니다. HttpHeaders 객체를 이용해서 다운로드 시 파일의 이름을 처리하도록 합니다.

 

UpdateController 클래스 수정

MIME 타입은 다운로드를 할 수 있는 'application/octet-stream'으로 지정하고, 다운로드 시 저장되는 이름은 'Content-Disposition'을 이용해 지정합니다. 파일 이름에 대한 문자열 처리는 파일 이름이 한글인 경우 깨지는 문제를 막기 위함입니다.

 

위에서 호출했던 것을 다시 호출하면 해당 파일을 다운로드하게 됩니다.

 

브라우저 하단부에 파일이 설치된 것을 확인할 수 있습니다. (브라우저 크롬 기준)


업로드된 후 다운로드 처리

Ajax 파일 업로드 처리 후, 파일 이미지를 클릭하면 다운로드 될 수 있도록 처리합니다.

 

uploadAjax.jsp

일반 첨부파일 업로드 후 이미지 클릭(<img> 태그 클릭)하면 자동으로 다운로드 처리되는 것을 확인할 수 있습니다.

 

다음은 서버에서 파일 이름에 UUID가 붙은 부분을 제거하고 순수하게 다운로드되는 파일 이름으로 저장될 수 있도록 합니다.

 

UploadController 클래스 수정

수정 후 테스트 (첨부파일 업로드 후 다시 다운로드)

 

728x90
반응형