wep.xml

servlet-context.xml

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);
	}
}

**Thumbnailator (**이미지 썸네일, Maven 라이브러리)

Quartz - 스케쥴러 (Maven 라이브러리)