서버에서 파일을 관리할 때 클라이언트가 보낸 파일 이름 그대로 저장한다면 이미 있는 파일을 덮어 쓸 수 있다. 그래서 파일을 저장할때는 겹치지 않는 파일명으로 관리해야 한다. 그럴때 스프링이 제공하는 UUID를 활용하면 편하다.
//파일 이름 생성 ex) qwe-qwe.png
private String createStoreFileName(String originalFilename) {
String ext = extractExt(originalFilename);
String uuid = UUID.randomUUID().toString();
return uuid + "." + ext;
}
UUID.randomUUID().toString()
부분을 통해서 랜덤값을 만들고 String으로 반환해준다. 그리고 이 uuid.png 형식으로 반환하면 서버에 저장할 파일명이 완성 된다. (참고로 생성된 uuid가 똑같을 확률은 로또 1등 맞을 확률보다 낮다.) //확장자 명 가져오기 ex) image.png -> png 추출
private String extractExt(String originalFilename) {
int pos = originalFilename.lastIndexOf(".");
return originalFilename.substring(pos + 1);
}
String.lastIndexOf(Char)
는 Char 와 일치하는 인덱스 번호를 가져온다. String.substring(index)
는 index 번호로부터 끝까지 문자열을 가져온다.