[이미지업로드] summernote
https://summernote.org/getting-started/#for-bootstrap-4
Summernote - Super Simple WYSIWYG editor
Super Simple WYSIWYG Editor on Bootstrap Summernote is a JavaScript library that helps you create WYSIWYG editors online.
summernote.org
부트스트랩4 호환 방식
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Summernote with Bootstrap 4</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote-bs4.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote-bs4.min.js"></script>
</head>
<body>
<div id="summernote"></div>
<script>
$('#summernote').summernote({
placeholder: 'Hello Bootstrap 4',
tabsize: 2,
height: 100
});
</script>
</body>
</html>
onImageUpload
Summernote - Super Simple WYSIWYG editor
Super Simple WYSIWYG Editor on Bootstrap Summernote is a JavaScript library that helps you create WYSIWYG editors online.
summernote.org
이미지 소스에 뭐가 들어가는가?
내 하드디스크의 이미지 : 경로
서브밋해서 데이터베이스에 경로 저장
클라이언트1이 올리고 클라이언트2가 열어보는 경우
올린 로컬경로만 노출?
썸머노트를 개발자도구로 열어보면
이미지를 바이너리 값으로 변환후 나름의 인코딩 값(data:image)으로 변환해서 그림파일을 텍스트로 표현
장점 : 경로 차이로 인한 골치아픈 상황이 안생김
일반적인 텍스트 에디터에서 제공하는 방식은 다름
onImageUpload에 펑션으로 적어주면 오버라이딩 된다.
// onImageUpload callback
$('#summernote').summernote({
callbacks: {
onImageUpload: function(files) {
// upload image to server and create imgNode...
$summernote.summernote('insertNode', imgNode);
}
}
});
// summernote.image.upload
$('#summernote').on('summernote.image.upload', function(we, files) {
// upload image to server and create imgNode...
$summernote.summernote('insertNode', imgNode);
});
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Summernote with Bootstrap 4</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote-bs4.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote-bs4.min.js"></script>
</head>
<body>
<div id="summernote"></div>
<script>
$('#summernote').summernote({
callbacks: {
onImageUpload: function(files) {
alert("동작하나?");
}
},
placeholder: 'Hello Bootstrap 4',
tabsize: 2,
height: 100
});
</script>
</body>
</html>
이미지를 올릴때 로컬 경로가 아닌 서버에 저장된 경로가 보여줘야함
글을 쓰는 도중에 이미지를 첨부하면 바로 서버에 업로드 되어야함 (ajax)
파일 객체를 폼에 담아서 서버로 서브밋
그냥 서브밋을 하면 페이지 전환
ajax call 필요
<form action="dst" method="post" enctype="multipart/form-data">
<input type="text">
<input type="file">
<input type="submit">
</form>
자바스크립트로 폼을 반들 수 있음
같은 코드 (11~13번 == 22~23)
본래 프로젝트에 붙여넣기
서버측 경로 표시
받은 이미지 띄워주기
썸머노트 메뉴얼
서버 경로이기 때문에 다른 pc 에서도 볼수 있음
이미지를 올리고 글을 서브밋 안하고 돌아가기&창닫기 해버리면? 조치 필요
- 세미프로젝트에는 잉여이미지 삭제 기능까지는 구현하지 말것
- 스크립트 (서버점검시 지워지도록)
blog.naver.com/heartflow89/221097971475
summernote 이미지 업로드 / callback
이번 포스팅에서는 국내 개발자들께서 오픈소스로 개발하신 위지윅인 summernote 이미지 업로드에 대해서 ...
blog.naver.com