문서 › 사진과 미디어
파일 첨부
PDF·한글·엑셀 파일을 올리고 본문에 내려받기 단추로 넣기.
공지 첨부 문서, 신청서 양식처럼 내려받을 파일을 글 안에 넣습니다. 파일은 내 서버에 올리고, 본문에는 파일 이름과 크기가 적힌 내려받기 단추가 들어갑니다.
직접 써 보기
툴바의 파일 첨부 단추로 파일을 골라 보세요. 이 데모는 실제로 올리지 않습니다.
이 데모의 코드
createEditor('#editor', {
toolbar: 'file | undo redo',
fileMaxSize: 10 * 1024 * 1024,
fileAccept: '.pdf,.hwp,.hwpx,.docx,.xlsx,.zip',
// 데모라서 올리지 않고 가짜 주소를 돌려줍니다
uploadFile: async (file) => 'https://example.com/files/' + encodeURIComponent(file.name),
});넣는 방법
툴바의 파일 첨부(file) 단추를 누르고 파일을 고릅니다. 여러 개를 한 번에 고를 수 있고, 파일마다 "올리는 중…" 자리가 먼저 생겼다가 올리기가 끝나면 내려받기 단추로 바뀝니다. 올리지 못하면 그 자리는 지워지고 안내가 뜹니다.
올리는 길
uploadFile함수가 있으면 그것을 씁니다. 파일을 받아 내려받을 주소를 돌려주면 됩니다. 진행률은 두 번째 인자의onProgress로 알릴 수 있습니다.- 없으면
uploadUrl로 POST 합니다. 이미지와 같은uploadField(기본file),uploadHeaders를 쓰고, 서버는{ "url": "…" }를 돌려주면 됩니다. - 둘 다 없으면 "파일을 올리려면 uploadFile 또는 uploadUrl 설정이 필요해요" 안내가 뜹니다. 첨부는 사진과 달리 base64 로 글에 넣지 않습니다.
createEditor('#editor', {
toolbar: 'board | file',
fileMaxSize: 20 * 1024 * 1024,
fileAccept: '.pdf,.hwp,.hwpx,.docx,.xlsx,.zip',
uploadFile: async (file, { onProgress }) => {
const form = new FormData();
form.append('file', file);
const res = await fetch('/upload/attachment', { method: 'POST', body: form });
if (!res.ok) throw new Error('업로드 실패');
return (await res.json()).url;
},
});fileMaxSize 를 넘는 파일은 올리지 않고 "파일이 너무 커요 (최대 …)" 안내를 띄웁니다. fileAccept 는 파일 고르기 창의 형식 목록입니다. 받는 형식은 서버에서도 꼭 다시 확인하세요.
첨부를 올릴 때도 upload:start, upload:progress, upload:success, upload:error 이벤트가 납니다 (이벤트). 첨부 주소는 getUnusedUploads() 목록에 들어가지 않습니다.
저장되는 HTML
<div data-file="" style="margin: 0.6em 0">
<a href="https://…/files/2026-신청서.hwp" download="2026-신청서.hwp" style="display: inline-flex; …">
📎 <strong>2026-신청서.hwp</strong> <span style="color: #8c959f; font-size: 0.85em">48KB</span>
</a>
</div>에디터 안에서 첨부는 한 덩어리로 다뤄집니다. 지우거나 Alt+Shift+↑/↓ 로 옮길 수 있습니다.
툴바에서의 위치
file 은 board 와 full 프리셋의 ⋯ 더보기 메뉴에 있습니다.
옵션
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
file | toolbar item | 파일 고르기 창을 열고 올린 뒤 내려받기 단추를 넣습니다. | |
uploadFile | (file, { onProgress }) => Promise<string> | 첨부를 올리고 내려받을 주소를 돌려줍니다. | |
uploadUrl | string | uploadFile 이 없을 때 POST 할 주소 (이미지와 같이 씀). | |
uploadField | string | 'file' | POST 할 때 파일 필드 이름. |
uploadHeaders | Record<string, string> | POST 에 붙일 헤더 (CSRF 토큰 등). | |
fileMaxSize | number (byte) | 없음 | 첨부 한 개의 최대 크기. |
fileAccept | string | 모든 파일 | 고르기 창 형식, 예: '.pdf,.hwp,.zip'. |