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)
'항해99 개발 일지 > [7주차] 클론 프로젝트' 카테고리의 다른 글
[06] Spring 이메일 인증 구현 (1) | 2023.01.01 |
---|---|
[05] Spring 페이징처리 + 키워드 검색기능 구현 (0) | 2022.12.30 |
[04] OAuth 2.0 카카오 로그인 구현 (0) | 2022.12.28 |
[02] Airbnb Clone Coding (Main CRUD) (0) | 2022.12.27 |
[01] WebSecurityConfig (0) | 2022.12.27 |