Airn3
285
2022-08-06 19:18:22
6
211

팀프로젝트 백엔드 쪽 이미지 업로드 질문드립니다


안녕하세요


현재 취업용으로 팀 프로젝트를 하고 있는데


스프링으로 현재 프로젝트 구현 중이고


게시판에 이미지를 넣는 작업을 시도하는 중 궁금증이 생겨서 질문 드립니다


파일 업로드를 제가 예제를 보니


1. 먼저 프론트 쪽에서 해당파일을 XXX방식으로 백엔드로 전송

2. 백엔드 단에서 해당 파일 이름을 받아서 DB에 저장 및 파일에 저장

3. C드라이브 등 지정된 경로에 해당 파일을 저장


이러한 경로로 알고 있는데요


만약 프론트 엔드와 협업 중이고 


백엔드에서 이미지 파일을 저장하고 불러와서 게시글을 생성하거나 조회할 때 해당 이미지를 게시글에 넣어서 줘야되는경우


이 이미지 파일은 이름만 DB에 저장하는 형식인가요? 

아니면 이미지 파일 자체가 어딘가에 저장되는 형식인가요?


0
  • 답변 6

  • 헤르머스
    1k
    2022-08-06 19:48:04
    Base64인코딩해서저장하세요..
    저는이렇게했습니다.
    리소스 아래 식별번호txt 로 인코딩된 이미지 코드저장해서
    뷰에띄어줘야할때 보여주는방식으로요.
  • Airn3
    285
    2022-08-06 20:00:58

    @낙서광


    해당방식은 결국 UUID 처럼 고유한 ID값을 가지게해서 DB에 저장한다는 말씀이신거죠 ?

  • worker ant
    268
    2022-08-06 20:16:01

    실무에서는 보통 게시물 내용 내에 업로드된 파일의 URL만을 넣어줍니다.

    (DB 자원은 비쌉니다.)

  • 헤르머스
    1k
    2022-08-06 20:45:20

    그죠..

    특정문자로 저장해야지 

    파일자체로 들고다닐 생각하면 어휴..

    DB 에 저장한다고 생각해보세요..

    저도 방법이 없어서 파일아래 텍스트파일 만들어서 저장해두고쓰고있어요

  • 공부는 습관
    842
    2022-08-06 21:19:57

    실무에서는 파일이 저장된 경로, 파일 이름 등 정보만 DB에 저장하구요, 


    게시물을 보여줄 때는 DB에 저장된 경로와 파일 이름으로 파일 시스템에서 파일 끌고와서 클라이언트에게 뿌려줍니다.


    보통은 AWS S3 같은 스토리지 서비스를 이용하지만 팀 프로젝트 수준이라면 서버의 파일 시스템에 직접 저장해줘도 될거에요.

  • Hyeseong Lim
    66
    2022-08-07 21:12:04

    저는 일반적으로 아래와 같이 구현합니다.

    1. 웹에서 폼데이터에 이미지를 담아 POST로 전송합니다. (  input type=file 로 담으시면 됩니다.)

    2. 컨트롤러에서는 MultipartFile 또는 MultipartFile을 가진 DTO 로 파일 또는 파일과 기타 데이터를 받아옵니다.

    3. 서비스에서 해당 파일의 이름을 유니크하게 만들어 서버에 저장하고 해당 파일의 경로를 디비에 저장합니다.

    base64로 만들어서 디비에 넣고 다니면 편하겠지만 디비에 저장하는 데이터는 작으면 작을수록 좋습니다.

    스프링 서버에서 가져오거나 클라우드를 사용하세요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.