본문 바로가기
Spring

파일 업로드

by ppirae 2022. 6. 26.

파일을 업로드 하려면 파일은 문자가 아니라 바이너리 데이터를 전송해야 한다.

문자를 전송하는 이 방식으로 파일을 전송하기는 어렵다.

이 문제를 해결하기 위해 HTTP는 multipart/form-data 라는 전송 방식을 제공한다.

 

첫 예제에서는 서블릿을 이용한 파일 업로드를 구현함.

 

application.properties

logging.level.org.apache.coyote.http11=debug

이 옵션을 사용하면 HTTP 요청 메시지를 확인할 수 있다.

 

멀티파트 사용 옵션

spring.servlet.multipart.max-file-size=1MB : 파일의 최대 용량 제한 가능

spring.servlet.mulitpart.enabled=true (기본) : false로 설정하면 멀티파트 데이터 요청을 사용하지 않는다.


스프링과 파일 업로드

스프링은 MultipartFile 이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다.

 

@RequestParam MultipartFile file

업로드하는 HTML Form의 name에 맞추어 @RequestParam 을 적용하면 된다.

추가로 @ModelAttribute 에서도 MultipartFile 을 동일하게 사용할 수 있다.

 

MultipartFile 주요 메서드

file.getOriginalFilename() : 업로드 파일 명

file.transferTo(...) : 파일 저장

 

고객이 업로드한 파일명으로 서버 내부에 파일을 저장하면 안된다.

왜냐하면 서로 다른 고객이 같은 파일이름을 업로드 하는 경우 기존 파일 이름과 충돌이 날 수 있다.

서버에서는 저장할 파일명이 겹치지 않도록 내부에서 관리하는 별도의 파일명이 필요하다. (UUID)


인프런 김영한님의 스프링 MVC 2편을 듣고 작성한 글입니다.

https://inf.run/oKtV

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

 

'Spring' 카테고리의 다른 글

트랜잭션의 개념과 이해  (0) 2022.07.24
Spring Boot 와 JWT  (0) 2022.07.20
스프링 타입 컨버터  (0) 2022.06.25
로그인 처리 - 필터, 인터셉터  (0) 2022.06.18
로그인 처리 - 쿠키와 세션  (0) 2022.06.17

댓글