반응형
이 글은 코드로 배우는 스프링 웹 프로젝트(남가람북스, 구멍가게 코딩단)을 읽고 공부한 내용을 바탕으로 정리한 글입니다.
1. commons-fileupload
라이브러리 추가
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2. dispatcher-servlet.xml
설정
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="defaultEncoding" value="utf8" />
<beans:property name="maxUploadSize" value="104857560" />
<beans:property name="uplaodTempDir" value="file:~/upload/tmp" />
<beans:property name="maxInMemorySize" value="10485756" />
</beans:bean>
dispatcher-servlet.xml
은 스프링 MVC의 특정한 객체(Bean)을 설정해서 파일을 처리합니다. 파일 업로드를 할 때는 id
가 multipartResolver
인 객체를 설정합니다.
3. views/sample/exUpload.jsp 작성
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>sample/exUpload</title>
</head>
<body>
<form action="exUploadPost" method="post" enctype="multipart/form-data">
<div>
<input type="file" name="files">
</div>
<div>
<input type="file" name="files">
</div>
<div>
<input type="file" name="files">
</div>
<div>
<input type="submit">
</div>
</form>
</body>
</html>
4. 컨트롤러 작성
@GetMapping("/exUpload")
public void exUpload() {
log.info("----- exUpload -----");
}
@PostMapping("/exUploadPost")
public void exUploadPost(ArrayList<MultipartFile> files) {
files.forEach(file -> {
log.info("------------------------------");
log.info("name: " + file.getOriginalFilename());
log.info("size: " + file.getSize());
});
}
스프링 MVC는 전달되는 파라미터가 동일한 이름으로 여러 개 존재하면 배열로 처리할 수 있으므로 파라미터를 MultipartFiler
배열 타입으로 작성합니다.
위와 같이 파일을 지정해서 업로드하면 정상적으로 log가 찍히는 것을 볼 수 있습니다. (최종 업로드는 처리하지 않았습니다.)
반응형
'Java > Spring' 카테고리의 다른 글
[Spring boot] Maria DB 설정 (0) | 2023.01.06 |
---|---|
[Spring MVC] 컨트롤러의 Exception 처리 (0) | 2023.01.03 |
[Spring MVC] Controller (0) | 2023.01.03 |
[Spring MVC] 기본 구조 (0) | 2023.01.02 |
[Spring] MyBatis와 스프링 연동 (+log4jdbc) (0) | 2023.01.02 |
댓글