개발(Development)/React(리액트)
[React] Toast-UI Editor 이미지 업로드/드래그 첨부 막기 방법
카레유
2022. 5. 16. 15:27
# Toast-UI Editor 이미지 업로드 기능 제거 방법
Toat-UI Editor에서 이미지를 업로드하면,
multipart 형식으로 파일 첨부가 되는 것이 아니라
이미지 데이터 자체를 base64로 인코딩하여 img 태그의 src로 주입해버린다.
사이즈가 큰 이미지 파일을 이 상태 그대로 DB에 저장하고 싶지 않다면, 다른 방식을 생각해야 할 것이다.
이 글에서는 Toat-UI Editor의 이미지 첨부 자체를 막는 방법을 정리한다.
* 이미지를 첨부 파일로 서버에 전송하는 방법은 아래글 참고
[React] Toast-UI Editor 이미지 파일 서버 업로드 방법 (base64 인코딩 X)
방법은 코드 한줄이다.
Editor.prototype.getInstance().removeHook('addImageBlobHook');
원리는 이렇다.
Toast-UI 에디터에서 이미지를 업로드 하면,
아래의 addImageBlobHook(Blob | File, Callback) 이 동작하여 img src에 이미지 데이터를 주입한다.(base64로 인코딩하여)
이걸 제거해버리는 것이다.
그러면 이미지 업로드 기능 자체가 작동하지 않게 된다.
예제 코드는 아래와 같다.
import { useEffect, useRef } from 'react';
// Toast 에디터
import { Editor } from '@toast-ui/react-editor';
import '@toast-ui/editor/dist/toastui-editor.css';
export default function ToastEditor() {
// Editor DOM
const editorRef = useRef();
useEffect(() => {
// 이미지 업로드 막기
editorRef.current.getInstance().removeHook('addImageBlobHook');
}, []);
return (
<div>
<Editor
ref={editorRef}
placeholder="내용을 입력해주세요."
previewStyle="vertical"
height="300px"
initialEditType="wysiwyg"
toolbarItems={[['bold', 'italic', 'strike']]}
></Editor>
</div>
);
}
이제 에디터에 이미지를 드래그 해도, 결코 첨부되지 않을 것이다.
도움이 되셨길.