package org.lhr.controller;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
/*
@Controller
@RequestMapping(value = "/upload", method = RequestMethod.GET)
public class UploadController0 {
private static final Logger logger = LoggerFactory.getLogger(UploadController0.class);
// 위 오류 해결 import값 확인할 것 잘못된 import값이 들어가면 오류가 남
@GetMapping("uploadForm")
public String getUploadform() {
return "/board/uploadForm";
}
// 현재 날짜를 구하는 메서드
private String getFolder() {
// 현재날짜의 형식을 지정함
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 대문자 MM인 이유 : 시간 분이랑 구분하기위해 시간분은 mm임
// 현재날짜
Date date = new Date();
String str = sdf.format(date);
// -를 파일을 구분할 수 있는 문자로 치환해주는 함수
//File.separator는 파일구분자
return str.replace("-", File.separator);
}
@PostMapping("/uploadFormAction")
public void postUpload(MultipartFile[] uploadFile) {
// 어떤 폴더에 실제로 업로드를 할 것인지에 대한 폴더 경로
String uploadFolder = "C:\\uploadFolder";
for (MultipartFile files : uploadFile) {
// 향상된 for문 uploadFile 1차원 배열에 저장되어잇는것을 files에 저장해서 뿌리고의 반복
// 타입이 배열타입일 때만 사용이 됨
logger.info("파일명 = " + files.getOriginalFilename());
logger.info("파일 크기=" + files.getSize());
// 날짜별 폴더 생성
File uploadPath = new File(uploadFolder, getFolder());
UUID uuid = UUID.randomUUID();
logger.info("uuid=" + uuid);
// UUID 랜덤값_실제 파일명
String uploadFileName = uuid.toString() + "_" + files.getOriginalFilename();
// File saveFile = new File(파일업로드 경로, 파일명);
File saveFile = new File(uploadPath, uploadFileName);
logger.info("savefile=" + saveFile);
// 똑같은 폴더명을 만들필요가 없기 때문에 exists()함수를 통해 존재여부를 파악하여 없으면 (false) 폴더를 생성해라.
if (uploadPath.exists() == false) {
uploadPath.mkdirs();// 폴더를 make해라
}
// tranferTo메소드는 API를 보면 try-catch문 안에 넣으라고 나와있음
try {
files.transferTo(saveFile);
} catch (Exception e) {
e.getMessage();
} // 어떤 원인으로 오류나는지를 알려주는 역할을 함
} // 향상된 for문 end
}
}*/