23.03.10 다중 이미지 업로드

Kuno17·2023년 3월 14일
0

TIL/WIL

목록 보기
25/38
post-thumbnail
post-custom-banner

S3를 통해 이미지 파일을 다중 업로드

기존에는 하나의 파일만 S3에 업로드해서 저장한 경우라면 이번에는 하나의 게시판에 다중의 사진을 업로드하는 로직을 추가하였다.

  1. 리스트로 이미지를 받아올것
  2. 받아온 이미지를 S3에 저장하고 DB에 저장 할 것.

처음에는 다중으로 이미지를 업로드 하는 방법이 쉽게 생각나지는 않았다.
데이터베이스는 리스트를 저장할 수 없기 떄문에 따로 테이블을 만들기로 생각했다.

  1. 게시글과 id와 이미지url을 저장하는 테이블
@Entity
@Getter
@NoArgsConstructor
public class PostImage {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "POST_ID")
    private Post post;
    @Column
    private String image;

    public PostImage(Post post, String image) {
        this.post = post;
        this.image = image;
    }
}

Post와의 다대일 연관관계를 설정해서 Post(게시글)의 id를 기억하게 했다.

이렇게 하면 다음과 같이 저장될것이다.
Pk=1 Fk=1 imge=http://s3.amzone...jpg
Pk=2 Fk=1 imge=http://s3.amzone...jpg

즉 id가 1인 게시글의 이미지를 2개를 저장한 것이다.

Post를 작성하는 서비스에서 다음과 같은 코드를 추가해주면 된다.

 List<String> imgList = new ArrayList<>();
        List<String> img_url = s3Service.upload(requestDto.getImage());
        for (String image : img_url) {
            PostImage img = new PostImage(posts, image);
            postImageRepository.save(img);
            imgList.add(image);
        }
profile
자바 스터디 정리 - 하단 홈 버튼 참조.
post-custom-banner

0개의 댓글