개발자

텍스트 에디터 관련해서 질문입니다

2024년 03월 06일조회 349

React - quill 사용해서 텍스트 에디터 만드는 중인데 이미지 업로드시 base 64로 너무 긴데 db에 넣으려면 어떻게 해야하는지 아시는 분 계신가요 ? 그리고 프론트 처리인가요 백엔드 처리인가요..?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 3

인기 답변

김현우님의 프로필 사진

프론트와 백엔드 모두 작업이 필요할 수 있으며, 다음의 절차대로 움직입니다. (1) 이미지 업로드 (2) 업로드된 이미지의 URL을 에디터 본문의 img 태그에 삽입 (3) 작성완료된 본문(html) 전체를 DB에 저장 react quill을 별도의 설정 없이 사용하면 본문의 img 태그에 기본으로 base64 문자열이 삽입되어 아주 길어집니다. 따라서 우리가 원하는 일은 '툴바의 사진 버튼 눌러서 사진 삽입 시, base64 대신 url이 img 태그에 삽입되는 것'입니다. react quill에서는 custom toolbar를 지원하므로, 이를 통해 원하는 작업을 할 수 있습니다. custom toolbar 옵션을 이용하면 toolbar 속 사진 버튼의 click 이벤트에 대한 핸들러 함수를 직접 정의할 수 있습니다. 코드를 어떻게 작성할지 까지는 답변드리지 않겠지만, 대신 도움이 될 만한 링크들 함께 공유드릴게요. - https://www.npmjs.com/package/react-quill#custom-toolbar - https://quilljs.com/docs/modules/toolbar/#handlers - https://velog.io/@runprogrmm/Next.js-React-react-quill-%EC%97%90%EB%94%94%ED%84%B0%EB%A1%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0

김동원님의 프로필 사진

이미지 추가 시 백엔드로 요청 해서 스토리지(예 aws S3)에 저장 후 url 리턴받으면 될듯 합니다

옥탑방 강아지님의 프로필 사진

사용하는 db나 백엔드 환경에 따라 다르겠지만 스프링 부트 기준으로 받는 dto랑 entity 모두 @lob걸어주면 longtext타입으로 가지더군요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 03월 06일

Base64로 인코딩된 이미지는 문자열 형태로 매우 길어질 수 있습니다. 이런 큰 데이터를 DB에 저장하지 않는 것이 일반적으로 좋습니다. 그대신 이미지 파일을 서버의 파일 시스템에 저장하거나, 더 나아가 S3와 같은 클라우드 기반 스토리지 솔루션에 저장하는 것이 일반적인 방법입니다. React-Quill에서 제공하는 Image Handler를 사용하여 이 작업을 수행하겠다면 다음과 같은 과정을 거치게 됩니다: 1. React-Quill의 Image Handler에서 이미지를 base64 문자열로 가져옵니다. 2. 이 Base64 문자열이 아닌 원시 이미지 파일을 백엔드 서버에 업로드하기 위해 다시 Blob 객체나 FormData 객체로 변환합니다. 3. 변환된 이미지 데이터를 백엔드 서버에 업로드합니다 (이 작업은 프론트엔드에서 처리됩니다). 4. 백엔드 서버에서는 이 이미지 데이터를 받아 처리 후, 클라우드 스토리지 등에 이미지를 업로드하고 해당 URL을 반환합니다 (이 작업은 백엔드에서 처리됩니다). 5. 프론트엔드는 응답에서 반환된 URL을 이용해 에디터 내부에서 해당 위치에 이미지를 표시합니다. 요약하자면, 본질적으로 이는 프론트엔드와 백엔드 모두에서 처리되는 작업입니다. 프론트엔드에서는 사용자가 업로드한 이미지를 받고 백엔드 서버에 전송하는 역할을, 백엔드 서버에서는 해당 이미지를 저장하고 저장 위치의 URL을 반환하는 역할을 합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!