`

让CkEditor整合自己的上传页面

阅读更多

CKEditor是继承FCKEditor的一款非常优秀的Html编辑器。借助JSON,CKEditor具有非常强大的扩展能力。下面我就接合一个实际的例子为大家展示一下它的这种能力。

问题:CKEditor工具栏上有一个Image按钮,是为内容添加图片。但是默认情况下对话框只提供了一个插入image URL的文本框。如果要从本地上传图片,官方的推荐做法是配合CKFinder。网上有很多这方面的示例,我这里就不多说了。不过CKFinder有三点让我不满意的地方:一是它在允许你上传文件的同时会把服务器上的文件显示出来,这可让我不爽。二是不同的后台技术需要配合相应的CKFinder--PHP,ASP.net,JAVA等。这让已经有上传管理的系统进行整合不方便。三是CKFinder是进行文件处理,如果我想进行数据库的处理--用户upload的图片存到数据库中,然后从数据库中读取图片放在编辑器里就没办法了。
目标:所以我希望在插入image对话框的URL文本框的旁边放一个我自己的Upload按钮,点击后页面转入我自己定义的文件/图片上传页面,接下来我自己处理upload的整个过程。最后返回一个url,通过这个url可以看到图片(可能是个动态页面,比如aspx文件,通过参数从数据库里取出图片)
实现:这样的目标在以前是需要通过更改源代码来实现,但现在不需要了,借助CKEditor强大的扩展能力,我们完全可以以javascript实现这一目标。

以下是代码:

JScript code
function addUploadButton(editor){ CKEDITOR.on('dialogDefinition', function( ev ){ var dialogName = ev.data.name; var dialogDefinition = ev.data.definition; if ( dialogName == 'image' ){ var infoTab = dialogDefinition.getContents( 'info' ); infoTab.add({ type : 'button', id : 'upload_image', align : 'center', label : 'upload', onClick : function( evt ){ var thisDialog = this.getDialog(); var txtUrlObj = thisDialog.getContentElement('info', 'txtUrl'); var txtUrlId = txtUrlObj.getInputElement().$.id; addUploadImage(txtUrlId); } }, 'browse'); //place front of the browser button } }); } function addUploadImage(theURLElementId){ var uploadUrl = "..."; //这是我自己的处理文件/图片上传的页面URL var imgUrl = window.showModalDialog(uploadUrl); //在upload结束后通过js代码window.returnValue=...可以将图片url返回给imgUrl变量。 //更多window.showModalDialog的使用方法参考 //http://blog.csdn.net/jrq/archive/2010/01/27/5259946.aspx var urlObj = document.getElementById(theURLElementId); urlObj.value = imgUrl; urlObj.fireEvent("onchange"); //触发url文本框的onchange事件,以便预览图片 }

只要将这段代码放到页面onload事件中,比如放在CKEDITOR.replace()后面,就可以了。说明:CKEditor的扩展基本上都是通过on方法实现的。on方法有2个参数,第一个是CKEditor内部的各种事件名称,类似一个钩子。第二个参数是要扩展的代码,通常是一个js函数。因为我们要改动的是image对话框,所以对应的事件名称是dialogDefinition,对话框的名字是image。image url文本框在info选项卡内,通过getContents('info')定位到该选项卡,然后通过infoTab.add()方法就可以在选项卡内添加新的元素了。元素定义是JSON格式。我们这里定义了一个button,其中包括标签(label)和点击(onClick)以后要执行的动作(通常也是个js函数)。infoTab.add()第二个参数是用来指定新元素的位置-在该元素之前。如果不提供这个参数则新元素放在选项卡最后。我们在这里将这个新的Upload按钮放在CKEditor默认的browser按钮前面。
upload按钮点击后就是进行upload动作。这个是通过addUploadImage()完成的。该函数接受一个id参数,用来指定upload完成后图片的url返回给哪个表单元素。通过查看源代码可知图片URL文本框的id是txtUrl,但该id是CKEditor自己内部的id,不是页面上最终生成的HTML的id。不过CKEditor也提供了方法getContentElement()和getInputElement()进行2者的转换。
addUploadImage函数内容也很简单,先指定我自己的文件上传页面的URL,然后在一个模态窗口中打开这个页面,处理文件上传的所有细节。最终的结果是将图片上传后在服务器上的URL地址返回给一个变量imgUrl。最后把这个变量赋值给传进来的图片URL文本框里。最后手工触发一下onchange事件,这样在image对话框里就能看到图片的预览效果了。

1
1
分享到:
评论
4 楼 yhceye2010 2011-08-06  
谁啊? 大呼小叫的~~
3 楼 lisongqiu168 2011-08-05  
我日[b][/b]
2 楼 lisongqiu168 2011-08-05  
大幅度释放
1 楼 lisongqiu168 2011-08-05  
艹 搞爷[b][/b]

相关推荐

    CKEditor整合上传图片功能,绝对能用

    在“CKEditor整合上传图片功能”中,我们主要关注的是如何将CKEditor与CKFinder结合,实现图片的上传和管理功能。 CKFinder是一款强大的文件管理器,特别适合与CKEditor搭配使用。它提供了文件浏览、上传、下载、...

    springmc ckeditor ckfinder三者整合

    CKEditor可以嵌入到HTML页面中,让用户在Web应用中拥有类似桌面编辑软件的体验。此外,CKEditor还支持自定义配置和插件扩展,以满足不同项目的需求。 CKFinder则是一个与CKEditor配套的文件管理器。它可以方便地...

    Ckeditor与ckfinder整合

    在本文中,我们将深入探讨如何将Ckeditor与ckfinder整合在Java环境下,实现文件上传功能。Ckeditor是一款强大的富文本编辑器,而ckfinder则是一个文件管理器,它们结合使用可以方便地在编辑器中插入、管理和上传各种...

    ckeditor与ckfinder(java版)整合,实现图片上传

    ### CKEditor与CKFinder(Java版)整合实现图片上传的知识点 #### 1. CKEditor配置详解 **下载与安装** - **下载地址**: [http://ckeditor.com/download](http://ckeditor.com/download) - **安装步骤**: - 解压...

    php168 整站系统与ckeditor整合指南

    《php168 整站系统与ckeditor整合指南》 在网页内容编辑中,CKEditor是一款强大且功能丰富的文本编辑器,它源自FCKeditor的重写,提供了一个灵活、可扩展的API接口。CKEditor的新特性是基于插件的架构,允许用户...

    java与ckeditor和ckfinder整合后实现上传图片功能

    以下是对"java与ckeditor和ckfinder整合后实现上传图片功能"这一主题的详细说明。 首先,**CKEditor** 是一个开源的JavaScript富文本编辑器,它提供了丰富的文本格式化选项,让用户可以在网页上创建类似于Word文档...

    ckeditor批量上传图片--demo

    首先,让我们理解CKEditor批量上传图片的基本原理。批量上传图片通常涉及到两个主要部分:前端的用户界面和后端的处理逻辑。前端负责收集用户选择的图片,而后端则接收这些图片并进行存储,返回存储成功的图片URL,...

    wordpress插件ckeditor整合ckfinder

    CKFinder是一款文件管理应用程序,能够与CKEditor无缝集成,让用户在编辑内容时可以直接从浏览器中选择和上传文件。它支持图片、文档、视频等多种类型文件的管理,且具有分目录结构,便于组织和查找文件。CKFinder还...

    ckeditor整合webupload插件+后台接口代码

    在这个场景中,我们将讨论如何整合WebUpload插件与CKEditor,以实现文件上传功能,并涉及后台接口的实现。 首先,WebUpload是由百度开源的一个前端文件上传组件,它支持多文件选择、断点续传、预览、进度条等功能,...

    ckeditor_4.2.2_full整合ckfinder_php_2.4+去掉提示+中文重命名+上传的文件路径带域名

    CKEditor是一款强大的富文本编辑器,提供丰富的文本格式化选项,而CKFinder则是一个文件管理器,用于在网页中上传、浏览和管理图片、文档等资源。 CKEditor 4.2.2 是 CKEditor 的一个版本,它提供了许多改进和新...

    struts2整合CKEditor

    将CKEditor整合到Struts2框架中,可以方便地实现文本编辑与图片上传功能。 在Struts2中整合CKEditor,主要涉及以下几个关键知识点: 1. **CKEditor的安装与配置**:首先,你需要从CKEditor官网下载最新版本的编辑...

    ckfinder和ckeditor整合的demo

    整合CKFinder和CKEditor,可以让用户在编辑内容时直接通过内置的CKFinder访问和管理服务器上的资源,这样就不需要离开编辑器界面去寻找和上传文件。这对于内容创作者来说是一个非常便捷的功能,因为它减少了在多个...

    CKEditor,Ckfinder上传图片详解及部分示例源码

    通过分析和理解这些示例,开发者可以更好地了解如何在自己的项目中实施CKEditor和Ckfinder的整合,从而提供一个完善的图片上传和管理解决方案。 在实际应用中,为了提高用户体验,开发者可能还需要关注性能优化,...

    最新c#整合ckeditor+ckfinder示例

    本示例聚焦于"C#"环境下如何整合CKEditor和CKFinder,这是一套强大的编辑器与文件管理器组合,适用于创建具有高级文本编辑功能和图片/文件上传功能的网页应用程序。 CKEditor是一款知名的开源JavaScript富文本编辑...

    servlet整合ckeditor编辑器

    在本项目中,我们将讨论如何在使用Maven管理的Servlet应用中整合CKEditor,实现文件上传的功能。 首先,我们需要理解Maven的角色。Maven是一个项目管理和综合工具,它可以帮助开发者管理项目依赖、构建项目以及执行...

    ckeditor4.2与ckfinder整合到一起

    5. **运行和测试**:在VS2010中运行你的项目,打开包含CKEditor的页面,你应该能在编辑器中看到图片或文件上传的按钮。点击这些按钮会打开CKFinder,允许用户浏览服务器上的文件或者上传新的文件。 6. **安全考虑**...

    Ckeditor + ckfinder整合for JAVA(支持文件上传)

    通过以上步骤,你就可以在Java Web项目中成功整合Ckeditor和ckFinder,提供一个支持文件上传的富文本编辑器。在实际开发中,你可能还需要根据项目需求进行一些定制化工作,例如调整编辑器样式、增加额外的插件等。...

    ckeditor整合

    这通常通过将CKEditor的JS文件添加到页面头部或者使用CDN来实现。配置CKEditor的基本设置,如定制工具栏、语言等。 2. **配置CKFinder**:下载CKFinder ASP版2.0.1后,将其部署到服务器上合适的目录。你需要配置...

    在VS2008中整合ckeditor和ckfinder.rar

    在本文中,我们将深入探讨如何在Visual Studio 2008 (VS2008) 中集成CKEditor和CKFinder,这两个工具对于Web开发人员来说是构建富文本编辑器和管理上传文件的强大组合。CKEditor是一款流行的开源JavaScript文本编辑...

    CKEditor4.3.4增加插入高亮代码插件_整合版

    - 将gcp的CSS和JavaScript文件引入到CKEditor的配置文件或页面中,确保在编辑器运行时可以访问到这些资源。 - 配置CKEditor,添加自定义按钮或者工具栏项,使得用户可以方便地触发代码高亮功能。 - 使用CKEditor的...

Global site tag (gtag.js) - Google Analytics