반응형
서블릿이 제공하는 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편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 파일 업로드, 파일 다운로드 구현하기 (0) | 2022.03.18 |
---|---|
[Spring Boot] : 스프링과 파일 업로드 (0) | 2022.03.17 |
[Spring Boot] : 서블릿과 파일 업로드(1) (0) | 2022.03.17 |
[Spring Boot] : Spring이 제공하는 기본 포맷터 (0) | 2022.03.16 |
[Spring Boot] : 포맷터를 웹 애플리케이션에 적용하기 (0) | 2022.03.16 |
댓글