Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

DOing

[AWS] S3 Spring에서 사용하기 - 이미지 삭제 본문

AWS

[AWS] S3 Spring에서 사용하기 - 이미지 삭제

mangdo 2021. 4. 23. 19:42

이전 포스팅과 이어지는 포스팅입니다.

2021.04.23 - [AWS] - [AWS] S3를 스프링 프로젝트에서 사용하기 - 이미지 조회

 

[AWS] S3를 스프링 프로젝트에서 사용하기 - 이미지 조회

이전 포스팅과 연결되는 포스팅입니다. 이전 포스팅에서는 이미지 파일을 업로드 했다면 이번 포스팅에서는 업로드했던 이미지 파일을 조회한다. 2021.04.22 - [AWS] - [AWS] S3를 스프링 프로젝트에서

doing7.tistory.com

이미지 업로드, 이미지 조회에 이어서 이번 포스팅에서는 이미지를 삭제한다. 참고로 이미지의 수정은 (이미지 삭제 + 이미지 업로드)로 처리한다. 

 


[ 이전 코드 - productController ]

private void deleteFile(ProductImageVO image) {
  log.info("delete imageFile");

  try {
    Path file = Paths.get("C:\\phoneMall\\upload\\"+
    image.getImage_uploadPath().replace("/", "\\")+"\\"+image.getImage_uuid()+"_"+image.getImage_name());
    Files.deleteIfExists(file);
	
    // if mainImage, delete thumbnail
    if(image.getImage_type().contains("mainImage")) {
      Path thumbNail = Paths.get("C:\\phoneMall\\upload\\"+
      image.getImage_uploadPath().replace("/", "\\")+"\\s_"+image.getImage_uuid()+"_"+image.getImage_name());
      Files.deleteIfExists(thumbNail);
    }
  }catch(Exception e) {
  	log.error("delete file error"+e.getMessage());
  }
}

 


[ 수정 코드 - S3Service ]

// delete file
public void fileDelete(String fileName) {
  log.info("file name : "+ fileName);
  try {
  	s3Client.deleteObject(this.bucketName, (fileName).replace(File.separatorChar, '/'));
  } catch (AmazonServiceException e) {
  	System.err.println(e.getErrorMessage());
  }
}

AmazonS3 클라이언트의 deleteObject 메서드를 사용하여 삭제할 버킷 및 객체의 이름을 전달한다. 지정한 버킷 및 객체 키가 존재하지 않으면 오류가 발생한다.

 

[ 수정 코드 - productController ]

private void deleteFile(ProductImageVO image) {
  log.info("delete imageFile");
  try {
    // delete original image on s3
    s3service.fileDelete(image.getImage_uploadPath()+"/"+image.getImage_uuid()+"_"+image.getImage_name());

    // delete thumbnail image on s3
    if(image.getImage_type().contains("mainImage")) {
      s3service.fileDelete(image.getImage_uploadPath()+"/"+image.getImage_uuid()+"_"+image.getImage_name());
    }
  }catch(Exception e) {
  	log.error("delete file error"+e.getMessage());
  }
}

이미지 업로드
이미지 삭제

 

 

 

참고 출처 :

docs.aws.amazon.com/ko_kr/sdk-for-java/v1/developer-guide/examples-s3-objects.html

 

Amazon S3 객체에 대한 작업 수행 - Java용 AWS SDK

를 copyObjectdeleteObject객체 삭제와 함께 사용하여 객체를 이동하거나 객체의 이름을 바꿀 수 있습니다. 먼저 객체를 새 이름으로 복사한 다음(동일한 버킷을 원본과 대상으로 모두 사용할 수 있음)

docs.aws.amazon.com