wep.xml
wep-app탭 2.5 → 3.1로 버전들 수정
multipart-config 설정
<!-- file upload configuration -->
<multipart-config>
<location>c:\\\\dev\\\\upload\\\\temp</location>
<max-file-size>10485768</max-file-size>
<max-request-size>20971520</max-request-size>
<file-size-threshold>10485768</file-size-threshold>
</multipart-config>
servlet-context.xml
multipartResolver 설정
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>
UploadController.java
package edu.springz.controller;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;
import lombok.extern.log4j.Log4j;
@Log4j
@Controller
public class UploadController {
// 현재 시점의 '연/월/일' 폴더 경로 문자열 생성하여 반환
public String getFolder() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(new Date());
return str.replace("-", File.separator);
}
// 파일 업로드 처리
public void uploadFile(MultipartFile[] files) {
String uploadPath = "c:\\\\dev\\\\upload";
// 연/월/일 폴더 생성
File upFolder = new File(uploadPath, getFolder());
log.info("upFolder : " + upFolder);
// 업로드 경로에 해당 폴더가 없는 경우에는 생성
if (!upFolder.exists()) {
upFolder.mkdirs();
}
for(MultipartFile file : files) {
log.info("==============================");
log.info("file name : " + file.getOriginalFilename());
log.info("file size : " + file.getSize());
// UUID 설정
UUID uuid = UUID.randomUUID();
log.info(uuid);
log.info(uuid + "_" + file.getOriginalFilename());
File saveFile = new File(upFolder, uuid + "_" + file.getOriginalFilename());
try {
file.transferTo(saveFile); // 파일 업로드 처리
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
}
}
// ajax로 업로드
@GetMapping("/upload/ajaxAction")
public void uploadAjax() {
log.info("upload formAction Ajax");
}
@PostMapping("/upload/ajaxAction")
public void uploadActionAjax(MultipartFile[] files) {
log.info("upload action Ajax");
uploadFile(files);
}
// form 태그로 업로드
@GetMapping("/upload/formAction")
public void uploadForm() {
log.info("upload formAction");
}
@PostMapping("/upload/formAction")
public void uploadAction(MultipartFile[] files) {
log.info("upload action");
uploadFile(files);
}
}
pom.xml
<!-- thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.19</version>
</dependency>