썸머노트 실행 + 이미지 별도처리 JS
//썸머노트 실행 함수
function notesummer(){
//썸머노트 실행
$('#summernote').summernote({
lang:"ko-KR",
placeholder: '내용을 입력해주세요',
tabsize: 2,
width : 1200,
height: 600,
toolbar: [
['style', ['style']],
['font', ['bold', 'underline', 'clear']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['table', ['table']],
['insert', ['link', 'picture', 'video']],
['view', ['fullscreen', 'codeview', 'help']]
],
callbacks : {
//onImageUpload = 이미지 업로드시 작동하는 콜백함수
onImageUpload : function(files, editor, welEditable) {
// 파일 업로드(다중업로드를 위해 반복문 사용)
for (var i = files.length - 1; i >= 0; i--) {
uploadSummernoteImageFile(files[i],
this);
}
}
}//end callbacks
});
// 이미지 업로드시 ajax로 파일 업로드를 하고 성공 후 파일 경로를 return받음
function uploadSummernoteImageFile(file, editor) {
data = new FormData();
data.append("file", file);
$.ajax({
url : "summernoteImage",
data : data,
type : "POST",
dataType : 'JSON',
contentType : false,
processData : false,
success : function(data) {
//항상 업로드된 파일의 url이 있어야 한다.
$(editor).summernote('insertImage', contextPath+data.url);
}
});
}
}
이미지 처리 컨트롤러 코드
//썸머노트 이미지처리 ajax
@PostMapping("summernoteImage")
//썸머노트 이미지 처리
public String insertFormData2(
@RequestParam(value="file", required=false) MultipartFile file,HttpSession session
) {
Gson gson = new Gson();
Map<String, String> map = new HashMap<String, String>();
// 2) 웹 접근 경로(webPath) , 서버 저장 경로 (serverPath)
String WebPath = "/resources/images/summernoteImages/"; //DB에 저장되는 경로
String serverPath = session.getServletContext().getRealPath(WebPath);
String originalFileName=file.getOriginalFilename();
String extension = originalFileName.substring(originalFileName.lastIndexOf("."));
String savedFileName = UUID.randomUUID() + extension; //저장될 파일 명
File targetFile = new File(serverPath + savedFileName);
try {
InputStream fileStream = file.getInputStream();
FileUtils.copyInputStreamToFile(fileStream, targetFile); //파일 저장
// contextroot + resources + 저장할 내부 폴더명
map.put("url", WebPath+savedFileName);
map.put("responseCode", "success");
} catch (IOException e) {
FileUtils.deleteQuietly(targetFile); //저장된 파일 삭제
map.put("responseCode", "error");
e.printStackTrace();
}
return gson.toJson(map);
}
'API 적용해보기' 카테고리의 다른 글
스프링에 네이버로그인 적용해보기 (0) | 2022.01.16 |
---|