Search

43. 스프링부트 포토그램 프로필 페이지 Image DB에 업로드하기

프로필 페이지

이미지 저장 경로와 캡션 내용을 이제 데이터베이스에 저장해볼거다.
ImageService.java에
//image 테이블에 저장 Image image = imageUploadDto; Image imageEntity = imageRepository.save(image);
Java
복사
이렇게 쓰면 빨간 오류 찍 난다….
imageUploadDto 타입이 달라서 나는 오류다.
그래서 이미지 객체를 변환해서 넣어줘야한다.
ImageUploadDto.java에 UserUpdateDto에 해줬던거 처럼 toEntity 생성
public Image toEntity() { return Image.builder() .caption(caption) .postImageUrl(null) .user(null) .build(); }
Java
복사
근데 postImageUrl에서 file을 경로를 넣어줘야하는데 현재 UUID가 붙어있다.
public Image toEntity(String postImageUrl) { return Image.builder() .caption(caption) .postImageUrl(postImageUrl) .user(null) .build(); }
Java
복사
ImageService.java
//image 테이블에 저장 Image image = imageUploadDto.toEntity(imageFileName); Image imageEntity = imageRepository.save(image);
Java
복사
이제 ImageUploadDto에서 user정보를 null 로 받고있던 부분을 수정해준다
public Image toEntity(String postImageUrl, User user) { return Image.builder() .caption(caption) .postImageUrl(postImageUrl) .user(user) .build(); }
Java
복사
이렇게 파라매터 부분이 하나 더생기면 ImageService.java에서
//image 테이블에 저장 Image image = imageUploadDto.toEntity(imageFileName, principalDetails.getUser()); Image imageEntity = imageRepository.save(image); System.out.println("imageEntity :: " +imageEntity);
Java
복사
이미지 파일이름 :: ed9cbd47-3312-4d0c-8325-f7761ee94735_metamong2.jpeg Hibernate: insert into Image (caption, createDate, postImageUrl, userId) values (?, ?, ?, ?) imageEntity :: Image(id=1, caption=새로운 메타몽 사진입니다, postImageUrl=ed9cbd47-3312-4d0c-8325-f7761ee94735_metamong2.jpeg, user=User(id=2, username=ssar, password=$2a$10$2FhIKYOFhFortFF8l/Ab/OK0ZopqECPQfSWrIHz3qy/cJsQchbVmK, name=, website=null, bio=null, email=ssar@nate.com, phone=null, gender=null, profileImageUrl=null, role=ROLE_USER, createDate=2023-08-27T21:19:22.042724), createDate=2023-09-04T21:07:31.349317)
Java
복사
잘 들어갔다.
이제 이미지가 잘 들어갔으니까 사진 프로필에 이미지가 출력되어야하고
실패하면 익셉션 처리도 해줘야한다.
추가적으로
upload.jsp에 캡션부분을 비어서 보낼수도있으니까 캡션 태그에
required="required" 필수값으로 추가
<input type="text" placeholder="사진설명" name="caption" required="required" />
Java
복사
근데 포스트맨에서 강제로 넣으면 처리 될 수도 있으니까 그것도 다음에 같이 처리해주기.

*참고