버킷 생성 후, 접근을 위한 IAM 계정을 생성했다면 access key, secret access key 등이 제공되었을 텐데, 그 정보를 받아오는 파일입니다.
application/properties 파일에 작성한 값들을 읽어와서 AmazonS3Client 객체를 만들어 Bean으로 주입해주는 것입니다.
uploadImage
들고온 파일들을 forEach문을 사용해 돌면서 파일 정보를 읽어오고 AmazonS3 라이브러리를 활용해 putObject를 통해서 업로드 해주었습니다. 업로드 할 때 한글명을 가진 파일의 경우 인식을 제대로 못해 외계어로 올라가는 경우가 많았는데, 이 때문에 파일이름을 랜덤으로 생성해주는 createFileName 메서드를 따로 만들어 해당 이름으로 업로드 되도록 하였습니다.
PostViewController
@RequestPart는 multipart/form-data에 특화된 어노테이션
어노테이션도 많아서 많이 헷갈렸습니다..MultipartFile 받아올 때는 @RequestPart 어노테이션 사용하기!
관련 Issue #6
변경 사항
김태선 튜터님 강의를 듣고 View를 반환하기 위한 클래스는 PostViewController PostViewService 이렇게 따로 추가하였습니다.
AWS S3 사용을 위해 application/properties 작성하기
(천만원 과금을 당할 수 있다고 합니다….😱)
cloud.aws.credentials.accessKey= cloud.aws.credentials.secretKey= cloud.aws.s3.bucket= cloud.aws.region.static=ap-northeast-2 cloud.aws.stack.auto-=false
AwsS3Config
버킷 생성 후, 접근을 위한 IAM 계정을 생성했다면 access key, secret access key 등이 제공되었을 텐데, 그 정보를 받아오는 파일입니다. application/properties 파일에 작성한 값들을 읽어와서 AmazonS3Client 객체를 만들어 Bean으로 주입해주는 것입니다.
AwsS3Service
uploadImage 들고온 파일들을 forEach문을 사용해 돌면서 파일 정보를 읽어오고 AmazonS3 라이브러리를 활용해 putObject를 통해서 업로드 해주었습니다. 업로드 할 때 한글명을 가진 파일의 경우 인식을 제대로 못해 외계어로 올라가는 경우가 많았는데, 이 때문에 파일이름을 랜덤으로 생성해주는 createFileName 메서드를 따로 만들어 해당 이름으로 업로드 되도록 하였습니다.
PostViewController
@RequestPart는 multipart/form-data에 특화된 어노테이션 어노테이션도 많아서 많이 헷갈렸습니다..MultipartFile 받아올 때는 @RequestPart 어노테이션 사용하기!
post-view.html
버킷 url 파일 이름 앞까지 그대로 박아놨는데...
이렇게 어떻게 수정해야할지..고민해보겠습니다
실행해보기
http://localhost:8080/kp3c-view/post 이미지 선택+글 작성하고 게시 버튼 누르면 생성된 게시글 조회 화면으로 이동! -> 선택한 이미지들이 잘 조회됩니다! 수정, 삭제는 시간이 부족하여...
http://localhost:8080/kp3c-view/post/16
AWS S3에 파일 올라간 것 확인
s3에 잘 올라갔습니다.
DB 저장 확인
post_image 테이블 posts 테이블 DB에도 저장이 잘 되었습니다.
Todo List
aws s3를 사용하기 위해서는 버킷생성+IAM 계정생성을 해야햐는데 저는 이 부분에서 너무 애를 먹었습니다... 남은 시간동안 예외처리 꼼꼼하게 하도록 하겠습니다!
Check List
- [x] 포스트맨으로 체크해 보았나요?