전체적인 흐름 및 API를 적었다.
1. servlet-context.xml에서 세팅을 해준다.
<!-- fileUpload -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="defaultEncoding" value="UTF-8"/>
<beans:property name="maxUploadSize" value="52428800"/>
<beans:property name="maxInMemorySize" value="1048576"/>
</beans:bean>
이 설정을 통해 Multipart 기능을 사용할 수 있게 된다. (ex : MultipartFile)
<form id="form-register" method="POST" enctype="multipart/form-data" action="./write">// POST, multipart/form-data로 설정해야한다.
<input type="file" class="form-control border" name="upfile" multiple="multiple">
@PostMapping("/write")
public String write(BoardDto boardDto, @RequestParam("upfile") MultipartFile[] files, HttpSession session,
RedirectAttributes redirectAttributes) throws Exception {
//만약 multiple="multiple"을 설정안했으면 @RequestParam("upfile") MultipartFile file 로 설정한다.
String today = new SimpleDateFormat("yyMMdd").format(new Date());
String realPath = servletContext.getRealPath("/upload");
String saveFolder = realPath + File.separator + today;
File folder = new File(saveFolder);
if (!folder.exists())
folder.mkdirs();
for (MultipartFile mfile : files) {
String originalFileName = mfile.getOriginalFilename();
if (!originalFileName.isEmpty()) {
String saveFileName = UUID.randomUUID().toString() + originalFileName.substring(originalFileName.lastIndexOf('.'));
mfile.transferTo(new File(folder, saveFileName));
}
}
}