[SpringBoot] AWS S3 이미지 업로드 - 2Spring2023. 5. 27. 06:48
Table of Contents
728x90
728x90
이전 글에서 이어집니다
아쉬웠던 점은, 계속 S3에 디렉토리가 생긴다는 점이었으며, 이를 위해 코드 수정이 필요했다.
생각보다 엄청 간단했다.
@Transactional
@Override
public boolean img_modify(MultipartFile imgfile, UserDTO dto) throws IOException {
if(!imgfile.isEmpty()) {
String uuid = UUID.randomUUID().toString();
String serverFileName = s3Uploader.upload(imgfile, dto.getId()+uuid);
System.out.println(imgfile + " : " + dto.getId()+uuid);
System.out.println("serverFileName : " + serverFileName);
dto.setImg(serverFileName);
Optional<UserEntity> User = userRepository.findByIdx(dto.getIdx());
User.get().setImg(serverFileName);
return true;
}
else return false;
}
기존 로직은, UUID를 유저의 ID와 합쳐서 새로운 디렉토리를 만들고 있었다.
(또한 여기서, 유저의 ID값을 받아오지 못하고 있었는데 수정하면서 캐치했다 ... ;;;)
@Transactional
@Override
public boolean img_modify(MultipartFile imgfile, UserDTO dto) throws IOException {
if(!imgfile.isEmpty()) {
String serverFileName = s3Uploader.upload(imgfile, userRepository.findByIdx(dto.getIdx()).get().getId());
dto.setImg(serverFileName);
Optional<UserEntity> User = userRepository.findByIdx(dto.getIdx());
User.get().setImg(serverFileName);
return true;
}
else return false;
}
User의 ID로 디렉토리를 생성할 수 있게 코드를 수정해줬다. (ID를 받아오게 수정 또한 해주었다)
이전의, 엄청 많은 디렉토리에서, 해당 유저의 디렉토리 하나만 생성되도록 로직이 정상 적용되었으며,
디렉토리 안에 차곡차곡 이미지가 들어간다.
여기서 또 문제점이 보였는데, 내가 구현하고 있는 로직은 현재 단순 프로필 이미지를 변경하는 기능이다.
만약 서비스가 배포되고, 유저의 수가 많아지면 이전 이미지를 삭제시키지 못해서 S3에 엄청 많은 이미지가 쌓일 것 같다. 또한 이미지 용량 제한도 아직 걸어놓지 않았다.
용량 제한이라던가, 요금 같은걸 자세히 알지는 못하지만. 분명 이슈사항이 될 수 있다고 생각.
업로드 시 이전 이미지를 삭제시킬 방법을 찾아 와서 포스팅하도록 해야겠다.
아마 저기 저 마지막 수정일자가 최신인 녀석 하나만 빼고 다 삭제시킬 수 있는 방법이 있지 않을까????
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!