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对话框里就能看到图片的预览效果了。
分享到:
相关推荐
在“CKEditor整合上传图片功能”中,我们主要关注的是如何将CKEditor与CKFinder结合,实现图片的上传和管理功能。 CKFinder是一款强大的文件管理器,特别适合与CKEditor搭配使用。它提供了文件浏览、上传、下载、...
CKEditor可以嵌入到HTML页面中,让用户在Web应用中拥有类似桌面编辑软件的体验。此外,CKEditor还支持自定义配置和插件扩展,以满足不同项目的需求。 CKFinder则是一个与CKEditor配套的文件管理器。它可以方便地...
在本文中,我们将深入探讨如何将Ckeditor与ckfinder整合在Java环境下,实现文件上传功能。Ckeditor是一款强大的富文本编辑器,而ckfinder则是一个文件管理器,它们结合使用可以方便地在编辑器中插入、管理和上传各种...
### CKEditor与CKFinder(Java版)整合实现图片上传的知识点 #### 1. CKEditor配置详解 **下载与安装** - **下载地址**: [http://ckeditor.com/download](http://ckeditor.com/download) - **安装步骤**: - 解压...
《php168 整站系统与ckeditor整合指南》 在网页内容编辑中,CKEditor是一款强大且功能丰富的文本编辑器,它源自FCKeditor的重写,提供了一个灵活、可扩展的API接口。CKEditor的新特性是基于插件的架构,允许用户...
以下是对"java与ckeditor和ckfinder整合后实现上传图片功能"这一主题的详细说明。 首先,**CKEditor** 是一个开源的JavaScript富文本编辑器,它提供了丰富的文本格式化选项,让用户可以在网页上创建类似于Word文档...
首先,让我们理解CKEditor批量上传图片的基本原理。批量上传图片通常涉及到两个主要部分:前端的用户界面和后端的处理逻辑。前端负责收集用户选择的图片,而后端则接收这些图片并进行存储,返回存储成功的图片URL,...
CKFinder是一款文件管理应用程序,能够与CKEditor无缝集成,让用户在编辑内容时可以直接从浏览器中选择和上传文件。它支持图片、文档、视频等多种类型文件的管理,且具有分目录结构,便于组织和查找文件。CKFinder还...
在这个场景中,我们将讨论如何整合WebUpload插件与CKEditor,以实现文件上传功能,并涉及后台接口的实现。 首先,WebUpload是由百度开源的一个前端文件上传组件,它支持多文件选择、断点续传、预览、进度条等功能,...
CKEditor是一款强大的富文本编辑器,提供丰富的文本格式化选项,而CKFinder则是一个文件管理器,用于在网页中上传、浏览和管理图片、文档等资源。 CKEditor 4.2.2 是 CKEditor 的一个版本,它提供了许多改进和新...
将CKEditor整合到Struts2框架中,可以方便地实现文本编辑与图片上传功能。 在Struts2中整合CKEditor,主要涉及以下几个关键知识点: 1. **CKEditor的安装与配置**:首先,你需要从CKEditor官网下载最新版本的编辑...
整合CKFinder和CKEditor,可以让用户在编辑内容时直接通过内置的CKFinder访问和管理服务器上的资源,这样就不需要离开编辑器界面去寻找和上传文件。这对于内容创作者来说是一个非常便捷的功能,因为它减少了在多个...
通过分析和理解这些示例,开发者可以更好地了解如何在自己的项目中实施CKEditor和Ckfinder的整合,从而提供一个完善的图片上传和管理解决方案。 在实际应用中,为了提高用户体验,开发者可能还需要关注性能优化,...
本示例聚焦于"C#"环境下如何整合CKEditor和CKFinder,这是一套强大的编辑器与文件管理器组合,适用于创建具有高级文本编辑功能和图片/文件上传功能的网页应用程序。 CKEditor是一款知名的开源JavaScript富文本编辑...
在本项目中,我们将讨论如何在使用Maven管理的Servlet应用中整合CKEditor,实现文件上传的功能。 首先,我们需要理解Maven的角色。Maven是一个项目管理和综合工具,它可以帮助开发者管理项目依赖、构建项目以及执行...
5. **运行和测试**:在VS2010中运行你的项目,打开包含CKEditor的页面,你应该能在编辑器中看到图片或文件上传的按钮。点击这些按钮会打开CKFinder,允许用户浏览服务器上的文件或者上传新的文件。 6. **安全考虑**...
通过以上步骤,你就可以在Java Web项目中成功整合Ckeditor和ckFinder,提供一个支持文件上传的富文本编辑器。在实际开发中,你可能还需要根据项目需求进行一些定制化工作,例如调整编辑器样式、增加额外的插件等。...
这通常通过将CKEditor的JS文件添加到页面头部或者使用CDN来实现。配置CKEditor的基本设置,如定制工具栏、语言等。 2. **配置CKFinder**:下载CKFinder ASP版2.0.1后,将其部署到服务器上合适的目录。你需要配置...
在本文中,我们将深入探讨如何在Visual Studio 2008 (VS2008) 中集成CKEditor和CKFinder,这两个工具对于Web开发人员来说是构建富文本编辑器和管理上传文件的强大组合。CKEditor是一款流行的开源JavaScript文本编辑...
- 将gcp的CSS和JavaScript文件引入到CKEditor的配置文件或页面中,确保在编辑器运行时可以访问到这些资源。 - 配置CKEditor,添加自定义按钮或者工具栏项,使得用户可以方便地触发代码高亮功能。 - 使用CKEditor的...