아이콘(png) 파일 : /ckeditor/4.5.2/plugins/fileupload/icons/fileupload.png
플러그인(js) 경로 : /ckeditor/4.5.2/plugins/fileupload/plugin.js
// plugin.js 파일 소스 CKEDITOR.plugins.add('fileupload', { icons: 'fileupload', init: function (editor) { editor.addCommand('FileUpload', { exec: function (editor) { var x = document.createElement("INPUT"); x.setAttribute("type", "file"); x.setAttribute("name", "file"); x.setAttribute("multiple", "multiple"); // 여러파일 가능하도록 속성 처리 x.setAttribute("id", "ckfile"); x.setAttribute("style", "display:none;"); if($("#ckfile").length==0) $("body").append(x); $("#ckfile").on("change",function(){ var ofw = $("body").css("overflow"); var html = []; var formData = new FormData(); for (var i = 0; i < x.files.length; i++) { formData.append("fileObj"+i, x.files[i]); } $.ajax({ url: '/upload/', data: formData, type: 'POST', processData: false, contentType: false, beforeSend: function () { $("body").css("overflow", "hidden"); $("body").append("<ul id=\"editorLoadingBar\" class=\"LoadingBar\"><li><div class=\"loader\">Loading...</div></li></ul>"); }, success: function (data) { var txt = data.replace(/<(\/script|script)([^>]*)>/gi, ""); if (txt.indexOf("업로드성공") == -1) { alert("파일을 업로드 하는데 실패하였습니다."); return; } var patten1 = /\(.+?\)/g; var txtString = txt.match(patten1)[0].replace(/\(/gi, '[').replace(/\)/gi, ']').replace(/\'/gi, '"'); var arr = JSON.parse(txtString); if (arr.length == 4) { var fileArr1 = arr[1].split(","); var fileArr2 = arr[3].split(","); if (fileArr1.length == fileArr2.length) { for (var i = 0; i < fileArr1.length; i++) { var src = fileArr1[i]; var dot = src.lastIndexOf('.'); var ext = src.substring(dot + 1, src.length).toLowerCase();; if (("jpg|jpeg|png|gif|bmp").indexOf(ext) > -1) { html.push("<img src=\"" + src + "\" alt=\""+fileArr2[i]+"\" /><br/>"); } else if (("mp4").indexOf(ext) > -1) { html.push("<video controls=\"controls\" src=\"" + src + "\" type=\"video/mp4\"> </video><br/>"); } else if (("mp3").indexOf(ext) > -1) { html.push("<audio controls=\"controls\" src=\"" + src + "\"></audio><br/>"); } else if (("zip|pdf|hwp|doc|docx|xls|xlsx|ppt|pptx|psd").indexOf(ext) > -1) { html.push("<a href=\"/download/?path=" + escape(src).replace(/\+/gi, '%2B') + "&name=" + escape(fileArr2[i]).replace(/\+/gi, '%2B') + "\" target=\"_blank\">" + fileArr2[i] + "</a><br/>"); } } } } }, complete: function () { $("body").css("overflow", ofw); $("#editorLoadingBar").remove(); editor.insertHtml(html.join('')); } }); }); $("#ckfile").click(); } }); editor.ui.addButton('FileUpload', { label: '파일첨부', command: 'FileUpload', toolbar: 'insert' }); } });
업로드되는 파일 처리 : /upload/
단일 파일
<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('', '/파일경로/파일명', '업로드성공','파일명');</script>
3개파일의 경우
<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('', '/저장경로/저장명1,/저장경로/저장명2,/저장경로/저장명3', '업로드성공','파일명1,파일명2,파일명3,');</script>
설정(js) 파일 : /ckeditor/4.5.2/config.js
CKEDITOR.editorConfig = function( config ) { config.extraPlugins = "fileupload"; // 플러그인이 하나일 경우 //config.extraPlugins = "youtube,fileupload"; // 플러그인이 여러개일 경우 }
댓글 없음:
댓글 쓰기