본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 서블릿과 파일 업로드(2)

by 오주현 2022. 3. 17.
반응형

서블릿이 제공하는 Part 에 대해 공부하고 실제 파일도 서버에 업로드 하는 실습을 진행했다. 먼저 파일이 저장될 경로를 만들어 준다.

 

C:\\git\\core_Study\\MVC2\\upload\\file

나는 이런 경로를 가지고 왔다. 이 경로를 어디에 적냐면

 

file.dir=C:/git/core_Study/MVC2/upload/file/

application.properties에 적어준다. 여기서 주의 할 점으로는 마지막에 / 를 넣어줘야 한다는 점이다.

 

@Value("${file.dir}")
private String fileDir;

컨트롤러에서 아까 저장한 경로 변수를 Value로 넣어주면 알아서 파일 위치를 확인한다.

 

//데이터 읽기
InputStream inputStream = part.getInputStream();
String body = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
log.info("body={}", body);

//파일에 저장하기
if (StringUtils.hasText(part.getSubmittedFileName())) {
    String fullPath = fileDir + part.getSubmittedFileName();
    log.info("파일 저장 fullPath={}", fullPath);
    part.write(fullPath);

많이 생략되어 있긴 한데 멀티파트 형식은 데이터 전송을 각 part로 나누어 전송하고 parts에는 이렇게 나누어진 데이터가 담기게 된다.

 

part.getSubmittedFileName() 은 클라이언트가 전달한 파일 명이다.

part.getInputStream() 은 Part의 전송 데이터를 읽을 수 있다.

part.write() 은 Part를 통해 전송된 데이터를 저장할 수 있다.

 

이렇게 저장하면 위에 application.properties에 적어둔 경로로 파일이 저장되게 된다. 주의 점으로는 용량이 클 경우 로그가 많이 남기 때문에 logging.level.org.apache.coyote.http11=debug 이 옵션은 끄는 게 낫다고 한다.

이 강의 특성상 점차 코드가 진화되어가기 때문에 여기서 더 진화된 코드를 다음 강의에서 다룬다고 한다.


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

반응형

댓글