CKeditor增加上传图片功能方法

CKeditor可以配合CKfinder实现文件的上传及管理。但是往往我们上传的图片需要某些自定义的操作,比如将图片路径写入数据库教程,图片加水印等等操作。

实现原理:配置CKeditor的自定义图标,单击弹出一个子窗口,在在子窗口中上传图片实现我们的自己的功能,然后自动关闭子窗口将图片插入到CKeditor的当前光标位置。

实现步骤:

1、配置CKeditor。网上很多资料,大家自己查。

2、配置config.js文件。此文件为CKeditor的配置文件。配置需要显示的图标。

CKEDITOR.editorConfig = function( config )
 2 {
 3     // Define changes to default configuration here. For example:
 4     config.language = 'zh-cn';
 5     config.skin = 'v2';
 6     // config.uiColor = '#AADC6E';
 7     config.toolbar =
 8     [
 9        ['Source', '-', 'Preview', '-'],
10         ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord'],
11         ['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],       
12         '/',
13         ['Bold', 'Italic', 'Underline'],
14         ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent'],
15         ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
16         ['Link', 'Unlink', 'Anchor'],
17         ['addpic','Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak'],//此处的addpic为我们自定义的图标,非CKeditor提供。
18         '/',
19         ['Styles', 'Format', 'Font', 'FontSize'],
20         ['TextColor', 'BGColor'],
21       
22     ];
23
24     config.extraPlugins = 'addpic';
25
26 };
 3、在CKeditorplugins文件夹下新建addpic文件夹,文件夹下添加addpic.JPG图标文件,建议尺寸14*13。addpic.JPG图标文件即为显示在CKeditor上的addpic的图标。在图标文件同目录下添加文件plugin.js,内容如下。

 

 1 (function () {
 2     //Section 1 : 按下自定义按钮时执行的代码
 3     var a = {
 4         exec: function (editor) {
 5             show();
 6         }
 7     },
 8     b = 'addpic';
 9     CKEDITOR.plugins.add(b, {
10         init: function (editor) {
11             editor.addCommand(b, a);
12             editor.ui.addButton('addpic', {
13                 label: '添加图片',
14                 icon: this.path + 'addpic.JPG',
15                 command: b
16             });
17         }
18     });
19 })();

 文件中的show函数为显示子页面使用,我将它写在CKeditor所在的页面中。

4、edit.asp教程x页面使用的js

edit.aspx页面就是使用CKeditor的页面。

 

function show() {

    $("#ele6")[0].click();
}
function upimg(str) {
    if (str == "undefined" || str == "") {
        return;
    }
    str = "<img src='/html/images/" + str+"'</img>";
    CKEDITOR.instances.TB_Content.insertHtml(str);
    close();
}
function close() {
    $("#close6")[0].click();
}
$(document).ready(function () {
    new PopupLayer({ trigger: "#ele6", popupBlk: "#blk6", closeBtn: "#close6", useOverlay: true, offsets: { x: 50, y: 0} });
});   
 以上就是js的代码,弹出窗口是使用jquery的弹出层,弹出层中嵌套iframe,iframe中使用upimg.aspx上传页面,大家如果有其他需要可以自己去设计弹出效果。为了大家调试方便,我将我实现弹出层的代码贴出来。

弹出层效果使用的是popup_layer.js方案,需要进一步加工的朋友可以自己在百度中谷歌。ele6为弹出激发需要的层,blk6为弹出层主体,close6为层中承载关闭按钮的层。代码如下

 

<div id="ele6" style="cursor:hand; color: blue; display:none;"></div>
    <div id="blk6" class="blk" style="display:none;">
        <div class="head"><div class="head-right"></div></div>
        <div class="main">               
            <a href="网页特效:void(0)"  id="close6" class="closeBtn"></a>               
            <iframe src="upimg.aspx"></iframe>                   
        </div>           
    </div>
别忘记引用jquery和popup_layer.js。

 

5、upimg.aspx页面

aspx代码

 

<div>
        <asp:FileUpload ID="FU_indexIMG" runat="server" />
        <br />
    <asp:Button ID="Button1" runat="server" Text="上传" onclick="Button1_Click" />
        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="取消" />
        </div>
对应的cs代码

 

 1 protected void Button1_Click(object sender, EventArgs e)
 2     {
 3         string imgdir = UpImg();       
 4         script = "window.parent.upimg('" + imgdir + "');";
 5         ResponseScript(script);
 6     }
 7     protected void Button2_Click(object sender, EventArgs e)
 8     {
 9         string script = "window.parent.close();";
10         ResponseScript(script);
11     }
12 /// <summary>
13     /// 输出脚本
14     /// </summary>
15     public void ResponseScript(string script)
16     {
17         System.Text.StringBuilder sb = new System.Text.StringBuilder("<script language='javascript' type='text/javascript'>");
18         sb.Append(script);
19         sb.Append("</script>");
20         ClientScript.RegisterStartupScript(this.GetType(), RandomString(1), sb.ToString());
21     }
22     /// <summary>
23     /// 获得随机数
24     /// </summary>
25     /// <param name="count">长度</param>
26     /// <returns></returns>
27     public static string RandomString(int count)
28     {
29         RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
30         byte[] data = new byte[count];
31         rng.GetBytes(data);
32         return BitConverter.ToString(data).Replace("-", "");
33     }

Button1_Click为确定按钮的单击事件函数。其中使用UpImg函数实现上传图片文件,我还在其中实现了加水印,缩图,将图片文件的大小以及相对路径存入数据库等自定义操作,大家可以在此发挥。UpImg返回值为保存图片的相对路径,然后调用editer.aspx页面的js函数upimg。js函数upimg功能为将字符串插入到CKeditor的当前光标位置,插入的是html代码。至此为止带有新上传图片相对路径的img标签就插入CKeditor的编辑区了,能够显示图片了。

Button1_Click为取消按钮的单击事件函数。调用editer.aspx页面的js函数close,将弹出层隐藏

时间: 2024-09-20 01:01:10

CKeditor增加上传图片功能方法的相关文章

ckeditor4.4.4如何增加上传图片功能

问题描述 id:"Upload",hidden:false,我就改了一下这个.点击上传服务器前面url地址收不到.上传不了.如何改动?哪位帮我改改哈 解决方案 本帖最后由 a384495569 于 2014-09-11 16:36:23 编辑解决方案二:单看描述不知道你什么问题,照着例子做

PHP上传图片进行等比缩放可增加水印功能_php技巧

啥也不说,直接上代码,大家可以自行添加增加水印功能: 复制代码 代码如下: <?php /** * * @author zhao jinhan * @date 2014年1月13日11:54:30 * @email xb_zjh@126.com * */ header('Content-type:text/html; charset=utf-8'); //定义缩略图的宽高 define('THUMB_WIDTH',300); define('THUMB_HEIGHT',300); /** * 重

Drupal 7安装ckeditor编辑器几种方法

这里说Drupal7 安装ckeditor的两种方法,但也许方法不仅仅是这两种,在我的学习中,我接触到了这两种方法,在这里做个笔记,自己的记性现在是太"好"了. Drupal的版本是7.24. 方法一:使用官方的CKeditor和IMCE 1.安装Ckeditor模块 https://drupal.org/project/ckeditor 2.安装IMCE模块 https://drupal.org/project/imce 下载上面的两个模块,解压到./site/all/modules

定制AjaxControlToolkit(2):给CalendarExtender增加清除功能

在定制AjaxControlToolkit(1):使一个CalendarExtender对应N个TextBox 的最后,为了展示主题,我贴了一张截图,也许大家注意到了,我的截图的右下 角有一个"清除"按钮,这就是本文要介绍的更改. 在我们的项目中,大多数的录入日期的文本框是不允许用户手输的,只能通 过 点击--弹出日期选择框的方式选择,这样可以避免烦人的检查动作,当然也可以 用MaskedEdit过滤,不过感觉没必要,有日期控件了,就不弄那么复杂了,另外 ,项目中大部分代码是以前写的,

javascript自动给文本url地址增加链接的方法分享

 这篇文章主要介绍了javascript自动给文本url地址增加链接的方法,有需要的朋友可以参考一下 URL地址自动添加的实现其实就是那么点内容:检测与替换.   检测   "检测"就是检测文字(字符串)内部是否有符合http地址的内容,显然,这需要用到正则表达式进行验证,这个工作前端和后台都可以做,这里,只讲前端的方法,使用JavaScript实现.   验证HTTP地址的正则表达式如下(可能有疏漏或是不准确之处,欢迎指正):   代码如下: var reg = /(http://|

WEB前端实现裁剪上传图片功能_javascript技巧

最后的效果如下: 这里面有几个功能,第一个是支持拖拽,第二个压缩,第三个是裁剪编辑,第四个是上传和上传进度显示,下面依次介绍每个功能的实现: 1. 拖拽显示图片 拖拽读取的功能主要是要兼听html5的drag事件,这个没什么好说的,查查api就知道怎么做了,主要在于怎么读取用户拖过来的图片并把它转成base64以在本地显示. var handler = { init: function($container){ //需要把dragover的默认行为禁掉,不然会跳页 $container.on("

BootStrap使用file-input插件上传图片的方法_javascript技巧

最近在写自己的个人网站 ,前端使用的bootstrap框架 ,做到上传图片功能的时候网上找到一个基于bootstrap的图片上传框架 file-input 插件, 这个插件做的非常符合我的审美观,所以简单记录一下这个插件的使用方法 首先根据自己的项目路径引入插件css和js文件 注意locale语言文件在fileinput.min.js文件之后引入 <!-- file input --> <link href="../../css/fileinput.min.css"

php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法_php技巧

本文实例讲述了php_imagick实现图片剪切.旋转.锐化.减色或增加特效的方法.分享给大家供大家参考.具体分析如下: 一个可以供PHP调用ImageMagick功能的PHP扩展.使用这个扩展可以使PHP具备和ImageMagick相同的功能. ImageMagick是一套功能强大.稳定而且免费的工具集和开发包,可以用来读.写和处理超过185种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式.利用ImageMagick,你可以根据web应

使用 AI 为 Web 网页增加无障碍功能

本文讲的是使用 AI 为 Web 网页增加无障碍功能, 原文地址:Making the Web More Accessible With AI 原文作者:Abhinav Suri 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:lsvih 校对者:Tina92,Cherry 使用 AI 为 Web 网页增加无障碍功能 图为一位盲人正在阅读盲文(图片链接) 根据世界健康组织的统计,全球约有 2.85 亿位视力障碍人士,仅美国就有 810 万网民患视力障碍