Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT]프로필 이미지 변경 기능 추가 #159

Merged
merged 4 commits into from
Feb 21, 2024
Merged

[FEAT]프로필 이미지 변경 기능 추가 #159

merged 4 commits into from
Feb 21, 2024

Conversation

Hong0329
Copy link
Contributor

@Hong0329 Hong0329 commented Feb 20, 2024

📣 Related Issue

📝 Summary

  • 프로필 수정하기, 덮어쓰기 API에 대해서 프로필 이미지를 multipart형식으로 제공받으면 해당 이미지를 S3에 올린 후에 해당 이미지에 접근할 수 있는 URL을 반환받고, 그것을 member테이블에 저장하는 기능을 추가했습니다.
  • 해당 과정에서 그전에 있던 이미지는 S3에서 삭제하게 로직을 구현했습니다. 이때 기본이미지였다면 삭제과정은 스킵하게 했습니다.
  • S3에 파일이 올라갈 때는 memberprofile/{memberId}/image.png와 같은 경로로 저장되게 코드를 작성했습니다.
  • requestBody를 multipart형식으로 받다보니 postman에서도 형식이 다릅니다. 이에 대해 아래에 예시 첨부합니다.
  • multipart로 받는 이미지의 크기 제한이 기본으로 1MB라고 하여 이 부분 수정하는 스크립트 APPLICATION.YAML에 추가했습니다.
  • nginx에서의 기본 제한도 1MB리고 하여 이 부분 수정하고 restart진행했습니다.
  • APPLICATION.YAML파일에 내용 수정이 있어서 깃엑션 시크릿 키 수정했습니다. 로컬에 대해서는 추후 따로 공유드리겠습니다.

🙏 Question & PR point

📬 Postman

스크린샷 2024-02-21 오전 5 28 57 스크린샷 2024-02-21 오전 5 45 23 스크린샷 2024-02-21 오전 5 29 12 스크린샷 2024-02-21 오전 5 25 53

existingMember.updateMemberIntro(profilePatchRequestDto.memberIntro());
}
//이미지를 받았을 경우 S3에 업로드하고, memberTable값 수정하고, 이전에 올라갔던 이미지는 S3에서 삭제
//이때 기본 이미지였다면 삭제 과정은 스킵. 현재는 깃허브에 올라간 사진이라서 사라지지 않지만, 추후 기본 이미지를 우리 S3에 올릴 것을 대비.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기본 이미지를 s3에 올린 후에 현재 가입된 유저들의 프로필을 변경해주는 플로우로 가면 되는지 궁금합니다!
그리고 클라쌤들한테 기본으로 설정해놓으신 이미지 삭제해달라고 요청드려야할 것 같아요!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 네 맞습니다!! 깃허브에 올린 링크로 타고가서 사진을 불러오는 것보다는 한국에 기반을 둔 우리 S3에 접근하여 이미지를 불러오는 것이 더 빠를 것이라고 저번 멘토링 때 얘기를 들었어서 기본 이미지를 S3에 올리고 해당 값을 private final static으로 선언하여 사용할 예정입니다! S3에 이미지 올리고 해당 URL 추출해보겠습니다!
  2. 넵! 클라분들 프로필 변경 구현하면서 기본값으로 설정해 놓은 것들 풀어달라고 요청하겠습니다.

@@ -26,6 +26,9 @@ public enum ErrorStatus {
GHOST_MYSELF_BLOCK("본인의 투명도를 내릴 수 없습니다."),
GHOST_USER("투명도가 -85이하라서 글이나 답글을 작성할 수 없습니다."),
WITHDRAWAL_MEMBER("계정 삭제 후 30일 이내 회원입니다."),
UNVALID_PROFILEIMAGE_TYPE("이미지 확장자는 jpg, png, webp만 가능합니다."),
PROFILE_IMAGE_DATA_SIZE("이미지 사이즈는 5MB를 넘을 수 없습니다."),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이미지의 크기 제한이 기본으로 1MB 라고 PR 내용에 추가해주셨었는데 혹시 다른 에러인지 궁금합니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 PR에 내용을 잘못 남겼나봅니다!(새벽이슈,,,죄송함다)일단 기본 제한값이 1MB여서 YAML에 스크립트를 추가하여 최대치를 5MB로 설정했습니다. 그래서 현재 최대치는 5MB이고, 이를 넘기면 PROFILE_IMAGE_DATA_SIZE에러가 발생하도록 코드를 작성했습니다!



private String generateImageFileName() {
return UUID.randomUUID().toString() + ".jpg";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확장자가 png나 jpng로 들어올 경우에도 jpg로 저장해주어도 불러올 때 문제가 없는지 궁금합니다!

Copy link
Member

@bo-ram-bo-ram bo-ram-bo-ram left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

너무 고생하셨습니다~!

@Hong0329 Hong0329 merged commit 0c82e48 into develop Feb 21, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEAT]프로필 사진 변경 기능 추가
2 participants