inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

다음으로

서버에 이미지와 텍스트가 혼재되어 있는 게시글 내용을 저장하고 싶습니다.

해결된 질문

4991

김솔민

작성한 질문수 1

0


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

[질문 내용]
안녕하세요. 스프링 MVC 2편 강의를 전부 듣고 JPA 강의를 어느정도 공부한 상태에서 디테일한 게시판 기능을 제공하는 서버를 만들기 위해서 도메인을 설계 중입니다.

네이버 카페, 블로그 등 흔히 접할 수 있는 플랫폼에서 제공하는 게시판은 본문 작성 시 단순히 첨부 파일을 업로드할 수도 있지만, 본문 내에 이미지를 삽입하는 방식으로도 작성하는 방식으로 구현되어 있습니다. 실제로 제가 설계하려는 프로젝트에서도 위와 비슷한 기능을 제공하고 싶습니다. 이렇게 작성한 게시글을 전송하는 방식을 구상하는 부분에서 해결하기 어려운 점이 있습니다.

예를 들어, 다음과 같은 게시글 내용을 전달해야 한다고 가정해봅시다.

본문내용 1
<사진1>
본문내용 2
<사진2>
본문내용 3
....

위와 같은 상황에서 단순히 이미지를 업로드할 뿐만 아니라 각각의 이미지의 위치가 본문의 어느 부분에 존재하는지에 대한 정보까지도 알고 있어야 합니다. 여기서 저는 두 가지의 해결 방법과 문제점들을 떠올려봤습니다.

  1. 프론트단에서 본문내용 작성 시 사진과 text가 동시에 들어올 경우, 각각 image 등의 binary 형태로 전송할 수 있는 태그와 plain text를 담을 수 있는 tag로 구분하고 name에 접미사를 붙이는 등의 방법으로 여러 개의 구분되는 part로 보낸 후, 서버 단에서 각각의 file image를 resolve하여 저장 -> 그래서 content를 실제로 db에 어떻게 저장해야되는데?

  2. 이미지와 text가 포함된 html 정보 자체를 전송하여, 서버측에서 각 tag를 파싱하여 이미지 정보가 들어올 때만 별도로 file resolve 후 S3 등 스토리지 내에 저장된 경로로 재구성하여 전체 markup 문서를 clob형태로 저장 -> html을 직접 파싱하는 데에 어려움이 있을 것 같음, 로컬에 저장된 이미지파일을 url로 넘길 경우, 서버 측에서 어떻게 이미지 주소를 알 수 있지?

두 가지 방법 중 어느 것을 선택해도 한계점이 명확히 보여서 어떤 방식으로 접근해야 할지 조언을 구하고 싶습니다. 읽어주셔서 감사합니다.

spring mvc

답변 1

3

나무늘보

안녕하세요, 김솔민 님! 공식 서포터즈 codesweaver 입니다.

일반적인 에디터 기능을 구현할 때 사진 업로드는 별도의 프로세스로 분리합니다.

사용자가 특정 위치에 커서를 놓은 상태에서 이미지 업로드 버튼을 클릭하여 이미지를 업로드하면 대체로 다음과 같은 작업이 발생합니다.

  1. 이미지를 서버로 업로드 (Ajax 등으로 파일 업로드 처리)

  2. 서버는 이미지를 저장하고 이미지 경로를 결과로 반환 (http://server.com/image/url/imageName.jpg)

  3. 자바스크립트는 이를 <img src="반환값"> 형식으로 엘리먼트 생성.

  4. 사용자 현재 커서 위치에 이미지 태그 추가.

이렇게 작성한 본문을 하나의 문자열로 서버에 전송하는게 보통 에디터가 이미지를 처리하는 순서입니다.

 

만약 CDN 을 이용한다면 위의 과정중 서버에 2.번 과정이 바뀝니다. CDN서버로 파일을 전송하고, 이미지 경로를 반환값으로 받습니다.

감사합니다.

3

김솔민

이런 방법이 있었네요 감사합니다!!!

이미지 업로드와 db 트랜잭션 묶는법

0

43

1

Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4

0

53

2

MessageSourceTest 코드

0

48

1

인터셉터 에러 설정

0

48

1

resolveArgument()메서드 질문

0

57

1

43강 검증1 에서 실패 로직 관련 질문있습니다.

0

57

2

타임리프 3.X 버전 rendering, serializer 에러 해결 방법

2

133

3

스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ

0

90

3

pdf 오타 문의

0

57

1

ItemUpdateForm 검증 관련 질문입니다.

0

49

1

22page 링크 주소 변경

0

59

2

특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문

0

53

1

섹션3번 수업에 대한 질문입니다.

0

80

2

@Autowired 보다 더 좋은 방법이 어떤 걸까요?

0

85

2

타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.

0

65

1

자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다

0

142

3

스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문

0

63

1

톰캣 에러 페이지가 안보입니다.

0

104

2

apiEceptionController에서 센드 에러 호출하면 안되는지?

0

81

1

세션 타임아웃시 쿠키 삭제 방법이 없나요?

0

118

2

ApiExceptionController 질문드립니다.

0

64

1

셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?

0

66

1

MemberRepository 필드의 fianl 선언 유무

0

85

2

혹시 index.html 에서는 fragment 사용이 안되는건가요

0

58

1