728x90
Service Layer 에서 파일 업로드 구현
@Value("${local.files-path}")
String rootPath; //properties에서 저장할 로컬 루트 경로를 가져온다.
@Override
@Transactional(rollbackFor = Exception.class)
public void storeFile(MultipartFile file) {
Date createDate = new Date();
String year = (new SimpleDateFormat("yyyy").format(createDate)); //년도
String month = (new SimpleDateFormat("MM").format(createDate)); //월
String day = (new SimpleDateFormat("dd").format(createDate)); //일
Path directory = Paths.get(rootPath, year, month, day); //Path를 사용해 디렉토리 경로 지정
//원래 파일이름 앞에 uuid를 추가시킴
String fileName = file.getOriginalFilename();
String saveFileName = uuidFileName(fileName);
try {
Files.createDirectories(directory); //경로에 폴더가 없을 경우 생성함. exception 발생하지 않음
Path targetPath = directory.resolve(saveFileName).normalize(); // 파일이름이 포함된 경로를 추가
if (Files.exists(targetPath)) {
throw new IOException("중복된 파일이 있어서 실패했습니다.");
}
file.transferTo(targetPath);
} catch (IOException e) {
e.printStackTrace();
}
}
private String uuidFileName(String originalFileName) {
UUID uuid = UUID.randomUUID();
return uuid.toString() + '_' + originalFileName;
}
728x90
'웹 프레임워크 > Spring' 카테고리의 다른 글
프로젝트E. 예약 : 한줄평 관련 web API 만들기 - 코드 리뷰 및 회고(웹 백엔드) (8) | 2021.02.17 |
---|---|
프로젝트 D. Spring Security를 이용한 로그인하기 및 예약 관련 web API 만들기 - 코드 리뷰 및 회고(웹 백엔드) (0) | 2021.01.25 |
Spring Controller에서 list형태가 포함되어 있는 json 포맷 받기, 응답 (0) | 2021.01.16 |
Spring Controller에서 json으로 Date format 객체 받기, 응답 (0) | 2021.01.16 |
프로젝트C. 메인, 상세보기 관련 web API 만들기 코드 리뷰 및 회고 (boostcourse 웹 백엔드) (0) | 2021.01.11 |