인프런 커뮤니티 질문&답변

6843wjdgus님의 프로필 이미지
6843wjdgus

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

예제로 구현하는 파일 업로드, 다운로드

여러개의 Resource 반환

작성

·

348

·

수정됨

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요 강의 잘 들었습니다.

현재 진행하고 있는 게시판 프로젝트에서, 로컬 컴퓨터(서버)의 C://폴더명(프로젝트 외부 폴더임) 하위에 이미지를 저장하고 있는데, 사진 게시판에 접근할 때, 여러개의 사진(10개씩)을 동시에 response로 줘야 하는 상황에서 어떻게 하는지 잘 모르겠습니다. ResponseEntity에 List<Resource>를 담았더니 잘 안되는 것 같습니다.

 

+ +또한, 이미지 뿐만 아니라, 하나의 이미지에 대한 정보(제목, 좋아요 수, 조회 수) 까지 함께 보내야 하는 상황입니다.

 

AWS 같은 서비스를 사용하지 않고, 서버 컴퓨터에 파일을 저장하는 경우, 여러개의 파일을 동시에 클라이언트에 전송할 때, 어떤 방식을 사용하는지 궁금합니다.

또한, 여러개의 이미지를 전송할 때, 이미지 하나당 묶여있는 데이터를 어떻게 해야 함께 보낼 수 있는지, 일반적인 방법을 알고 싶습니다.

 

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요 6843wjdgus님

일반적인 웹 브라우저를 사용하는 상황으로 가정하고 설명하겠습니다.

사진 게시판에 접근할 때 여러개의 사진을 동시에 보여주어야 한다면 웹 브라우저인 클라이언트에서 각각의 이미지를 따로 여러번 요청하시면 됩니다. 서버에서는 각각 요청이 오기 때문에 리스트로 반환하는 것이 아니라 각각 하나의 리소스만 반환하면 됩니다.

보통 <img> tag를 사용하고 그 경로를 서버의 경로로 지정해주시면 됩니다.

여러개의 사진을 요청한다면 <img> tag를 여러번 사용하도록 HTML를 작성하시면 됩니다.

추가로 제목, 좋아요 수, 조회 수의 경우에는 HTML를 서버에서 랜더링 할 때 HTML 요소에 포함해서 랜더링 해도 되고, 아니면 JSON 같은 형식으로 내려주시면 됩니다.

추가로 이미지 파일은 보통 byte 형식을 사용하고, 이미지당 묶여 있는 데이터의 경우에는 JSON 형식의 데이터를 사용하시면 됩니다. 그래서 이미지 byte와 데이터는 각각 따로 요청하도록 만드셔야 합니다.

간단히 예를 들어드리면 JSON 형식을 사용하는 경우에는 다음과 같이 먼저 JSON 형식의 파일을 내리고, 추가로 imageUrl을 통해서 이미지를 다운로드 받는 것을 클라이언트에서 추가로 구현해야 합니다.

[
  {
    "imageUrl": "/images/image1.jpg",
    "title": "제목1",
    "likes": 10,
    "views": 200
  },
  {
    "imageUrl": "/images/image2.jpg",
    "title": "제목2",
    "likes": 15,
    "views": 150
  },
  // ...
]

감사합니다.

6843wjdgus님의 프로필 이미지
6843wjdgus
질문자

감사합니다! 답변을 참고하여 resourceHandler를 이용하여 문제를 해결했습니다!!

6843wjdgus님의 프로필 이미지
6843wjdgus

작성한 질문수

질문하기