Quill 에디터(편집 에디터)에서 이미지 업로드 시, 네트워크가 느릴 경우 S3 업로드가 지연되어 글쓰기 과정에 불편함이 발생할 것이라고 판단했습니다. 이를 해결하기 위해, 먼저 업로드된 이미지를 Blob URL로 변환하여 즉각적인 미리보기를 제공하고, 사용자가 최종 제출을 할 때 Blob URL → S3 URL로 교체하자고 합니다.
Quill 편집기에서 업로드된 이미지를 Blob URL로 표시하는 과정에서, 이미지가 렌더링되지 않는 문제가 발생했습니다.
Quill 라이브러리의 공식 GitHub을 확인한 결과, Blob 형식은 기본적으로 지원하지 않아 별도의 커스터마이징이 필요하다는 것을 알 수 있었습니다.
https://github.com/slab/quill/pull/4208
다음 GitHub 이슈를 참고하여, Blob 형식을 지원하도록 직접 기능을 커스터마이징했습니다.
// customImageBlot.ts
class MyImage extends Image {
static sanitize(url: string) {
return sanitize(url, ['http', 'https', 'data', 'blob']) ? url : '//:0';
}
}
Quill.register('formats/image', MyImage);
이미지 업로드부터 Blob URL을 S3 URL로 교체하기까지의 전체 구조는 다음과 같습니다.