build.gradle

// s3 설정 관련
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

 

1. Amazon3SConfig

  • S3의 accessKey와 seceretKey, region, bucket 이름은 properties에 저장되어 있다.
  • 이 정보들이 깃헙에 유출되지 않도록 gitignore 설정에 properties를 추가해 주는 것을 잊지 말자! 

 

2. AmazonS3Controller

  • 이미지 업로드 확인을 위한 컨트롤러이기 때문에, 실제 서비스에선 사용하지 않는 파일이다. (그래서 빨간줄이 뜸)

 

3. AmazonS3Service

  • 1개 이상의 이미지가 담겨있는 multipartFileList를 for문을 돌려 이미지가 있을 시 convert 메소드를 통해 파일을 전환시켜 준다.
  • 그리고, new ImagFile 안에서 아래의 upload 메소드를 사용해 이미지 파일과, 폴더명, 유저 정보, 룸 정보를 담아준다. 
  • 다음 imageFileRepository에 저장한다.

 

  • 위에서 사용된 upload 메소드 부분이다. 
  • S3에 저장될 파일이름을 fileName 에 담아준다.
  • 다음, 이미지 파일과 파일 이름을 아래 putS3 메소드를 이용하여 S3에 업로드해준다.
  • 다음 아아래에 있는 removeNewFile 메소드를 이용해 로컬에 저장된 이미지파일을 삭제한다.

 

  • S3로 이미지 파일을 업로드하는 메소드이다.
  • putObject 메소드를 이용하여 지정된 버켓에 파일이름과 이미지파일을 저장해주고
  • return값으로 이미지 url을 String 타입으로 반환하다.

 

  • 위에 선언된 removeNewFile 메소드 부분이다.
  • 로컬에 저장된 파일을 삭제하는 역할을 한다.

 

  • 파일을 전환하는 convert 메소드 부분이다.

 

  • 이 부분은 RoomService에서 숙소정보글을 삭제할 때, 해당 글의 이미지 파일을  삭제해주는  메소드이다.

 

게시글 등록 부분

S3를 반영한 게시글 CRUD 부분은 아래를 참조해주세요 : )

 

Airbnb Clone Coding (Main CRUD)

 

Airbnb Clone Coding (Main CRUD)

전체 코드 중 주요 기능으로 잡은 에어비엔비 Room CRUD 부분을 정리해보려 한다. + 추가기능 ( 페이징 처리, 검색어 입력, S3, 게시글 좋아요, 비회원처리 ) Dto, Entity 등은 제외하고 Controlle / Repository

leejincha.tistory.com

 

+ Recent posts