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

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

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

파일을 업로드 하려면 파일은 문자가 아니라 바이너리 데이터를 전송해야 한다. 하지만 여기서 이름,나이,첨부파일을 보낼 때 바이너리 데이터뿐만아니라 문자 데이터도 전송해야 하는데 이 문제를 해결하기 위해 HTTP는 multipart/form-data 라는 전송 방식을 제공한다.

 

먼저 서블릿을 통한 파일 업로드 실습을 진행했다.

@PostMapping("/upload")
public String saveFileV1(HttpServletRequest request) throws ServletException, IOException {
    log.info("request={}", request);

    String itemName = request.getParameter("itemName");
    log.info("itemName={}", itemName);

    Collection<Part> parts = request.getParts();
    log.info("parts={}", parts);

    return "upload-form";
}

request.getParts()는 mulitpart/form-data 전송 방식에서 각각 나누어진 부분을 받아 확인이 가능하다.

 

<h4 class="mb-3">상품 입력</h4>
<form th:action method="post" enctype="multipart/form-data">
    <ul>
        <li>상품명 <input type="text" name="itemName"></li>
        <li>파일<input type="file" name="file" ></li>
    </ul>
    <input type="submit"/>

 

enctype="multipart/form-data" 방식으로 전송할 수 있다.

멀티파트 사용 옵션에서 업로드 사이즈 제한을 두는 법도 알려주었다.

 

spring.servlet.multipart.max-file-size=1MB
spring.servlet.multipart.max-request-size=10MB

 

이렇게 사이즈 제한이 가능하다. max-file-size는 파일 하나의 최대 사이즈이고 기본 1MB이다.

사이즈를 넘으면 SizeLimitExceededException가 발생하게 된다.


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

반응형

댓글