自定义CKeditor上传图片按钮

背景:之前公司的项目中用的是KindEditor富文本编辑器,后来发现有上传漏洞,所以项目中用了CKeditor富文本编辑器。But 发现自带的上传图片按钮并不能将上传的图片保存到服务器上,So 下面就来说一说如何在CKeditor中自定义上传图片按钮。

  1. CKeditor官网下载:https://ckeditor.com/ckeditor-4/download/
  2. 步骤:

1).下载后解压,将整个文件夹放在项目中,如下图:

2).打开config.js配置文件,修改原有的工具栏配置,将自带的上传图片按钮EasyImageUpload修改为自定义的按钮SimpleUpload(注意:大小写),然后注册自定义按钮,如下图:

3).在plugins文件下新建一个simpleupload文件夹,如下图:

4).在simpleupload文件夹下添加相关配置,如下图

5).plugin.js代码如下:

(function () {
    b = 'simpleupload';   //在config.js配置文件中写的注册自定义按钮名称
    CKEDITOR.plugins.add(b, {
        requires: ["dialog"],
        init: function (a) {
            a.addCommand(b, new CKEDITOR.dialogCommand(b));
            a.ui.addButton("SimpleUpload", {  //注意这里SimpleUpload是大写的,是在config.js中配置按钮名称
                label: "上传图片",  //鼠标放在按钮上时显示提示
                command: b,
                icon: this.path + "images/upload.png"   //自定义上传按钮图片,放在在simpleupload文件夹下的images文件夹中

            });
            CKEDITOR.dialog.add(b, this.path + "dialogs/simpleupload.js")   //添加上传图片配置脚本,放在simpleupload文件夹下dialogs文件夹中
        }
    })
})(); 

6).simpleupload.js代码如下:

(function () {
    CKEDITOR.dialog.add("simpleupload",
    function (a) {
        console.log(a);
        return {
            title: "上传图片",
            minWidth: 300,  //弹出框的最小宽度
            minHeight: 80,   //弹出框的最小高度
            contents: [{
                id: "tab1",
                label: "",
                title: "",
                expand: true,
                padding: 0,
                elements: [{
                    type: "html",
                    html: initImageDlgInnerHtml(a.name) //对话框中要显示的内容,a.name:表示的是当前编辑器的id,initImageDlgInnerHtml方法是调用页面上的js方法(注意:a.name是为了解决同一个页面上使用多个编辑器)
                }]
            }],
            onOk: function () {                
                initUploadImage();  //点击确定按钮调用页面上的js方法
            },
            onLoad: function () {
                //弹出框中默认的按钮为【确定】和【取消】,这里将【确定】按钮的文字为【上传】,鼠标悬停时显示也为上传
                $('.cke_dialog_ui_button_ok > .cke_dialog_ui_button').text('上传');
                $('.cke_dialog_ui_button_ok').attr('title', '上传');
            }
        }
    })
})();

7).在页面上的使用

➀.引用脚本:

<script src="@Url.Content("~/CKeditor/ckeditor.js")" type="text/javascript"></script>

➁.页面上使用:

<textarea id="Content" name="Content" style="height: 200px; width: 640px; "></textarea>

<script type="text/javascript">
    CKEDITOR.replace('Content', {
        height: 200,   //设置编辑器初始高度
        //removePlugins: "simpleupload"   //如果不需要上传图片按钮,加上这行代码即可
    });
</script>

➂.对话框显示的方法initImageDlgInnerHtml

//在弹出框中加入html(参数id:是simpleupload.js脚本传递过来的,用于上传图片成功后返回的图片插入到当前编辑器的id中,这里只有多个编辑器时才需用到)
var ckeditorId; //定义当前上传的图片的编辑器ID为全局变量
function initImageDlgInnerHtml(id) {
    ckeditorId = id;
    var content = '<a style="cursor:pointer;display:inline-block;padding: 4px;border: 1px solid #bcbcbc;background: #f8f8f8;" οnclick="triggerFileEvent()">选择图片</a>&emsp;<span id="imgName"></span>';
    return content;
}

➃.上传成功后将将图片插入到编辑器中,如下图:

以上就是在CKeditor自定义上传图片按钮

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章