반응형
파일을 업로드 하려면 파일은 문자가 아니라 바이너리 데이터를 전송해야 한다. 하지만 여기서 이름,나이,첨부파일을 보낼 때 바이너리 데이터뿐만아니라 문자 데이터도 전송해야 하는데 이 문제를 해결하기 위해 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편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 스프링과 파일 업로드 (0) | 2022.03.17 |
---|---|
[Spring Boot] : 서블릿과 파일 업로드(2) (0) | 2022.03.17 |
[Spring Boot] : Spring이 제공하는 기본 포맷터 (0) | 2022.03.16 |
[Spring Boot] : 포맷터를 웹 애플리케이션에 적용하기 (0) | 2022.03.16 |
[Spring Boot] : 포맷터를 지원하는 컨버젼 서비스 (0) | 2022.03.16 |
댓글