CKEditor+CKFinder配置以及使用简介_ckfinder 配置_FURYNO1的博客-程序员宅基地

技术标签: JavaScript  

ckeditor:可视化编辑器,版本:4.2

ckfinder:文件管理、图片上传,版本:2.4 forJava


1、下载ckeditor:http://ckeditor.com/download

下载ckfinder:http://cksource.com/ckfinder/download

2、ckeditor包解压:

将解压出来的ckeditor文件夹放置于工程的根目录下(也可放置于其他目录),可删除adapters和samples这2个文件夹。

ckfinder包解压:

_sources文件夹里是源代码文件,再把CKFinderJava-2.1.war解压

把ckfinder文件夹放置于工程的根目录下(注意:保持与ckeditor文件夹同级!)可删除其中的_samples文件夹,将WEB-INF中的config.xml复制到工程的WEB-INF中、将web.xml中配置也复制到工程的web.xml中去;修改config.xml的配置,将enabled属性修改为true,baseURL为配置自己的文件上传的路径,如图:

由于对baseDir属性的理解不太清楚快哭了~此处不做配置~

将WEB-INF中lib中的7个主要jar包:CKFinder-2.4.jar、CKFinderPlugin-FileEditor-2.4.jar、CKFinderPlugin-ImageResize-2.4.jar、CKFinderPlugin-Watermark-2.4.jar、commons-fileupload-1.2.2.jar、commons-io-2.0.1.jar、thumbnailator-0.4.5.jar复制到工程的WEB-INF中的lib下

此时,ckeditor和ckfinder就分别部署好了。

3、ckeditor如果需要集成ckfinder来上传文件和图片,需要修改ckeditor的config.js,此文件就在ckeditor文件夹下,只有一个函数:

[javascript]  view plain copy
  1. CKEDITOR.editorConfig = function( config ) {  
  2.       
  3. };  
在此方法中添加配置:

[javascript]  view plain copy
  1. CKEDITOR.editorConfig = function( config ) {  
  2.  //与CKFinder集成  
  3.  config.filebrowserBrowseUrl = '/ckfinder/ckfinder.html';    
  4.  config.filebrowserImageBrowseUrl = '/ckfinder/ckfinder.html?type=Images';    
  5.  config.filebrowserFlashBrowseUrl = '/ckfinder/ckfinder.html?type=Flash';    
  6.  config.filebrowserUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Files';   
  7.  config.filebrowserImageUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Images';  
  8.  config.filebrowserFlashUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Flash';  
  9.       
  10.  config.filebrowserWindowWidth = '900';   
  11.  config.filebrowserWindowHeight = '600';  
  12. };  
此时集成完成!

3、使用简介:

在页面中引入ckeditor.js,代码如下:

[html]  view plain copy
  1. <script src="/ckeditor/ckeditor.js"></script>  
[html]  view plain copy
  1. <textarea cols="80" name="editor1" rows="10"></textarea>  
  2. <script type="text/javascript">CKEDITOR.replace('editor1');</script>  
使用id属性也可以, CKEDITOR.replace('editor1')也可放在onload事件中

可定义ckeditor的几个常用的属性:

1) toolbar       工具栏:Basic(基本)、Standard(标准)、Full(全部),有3个可选(此处为我自己定义的),默认为Standard,也可自定义,具体可参考/ckeditor/config.js

2) uiColor        界面颜色

3) language    语言:zh-cn(中文,为默认)、en(英文)

4) filebrowserWindowWidth、filebrowserWindowHeight分别为打开ckfinder文件管理窗口的宽度和高度

例如:

[javascript]  view plain copy
  1. CKEDITOR.replace('editor1',  
  2. {  
  3.  toolbar:’Full’,unicolor:’# AADC6E’, language:’zh-cn’,  
  4.  filebrowserWindowWidth:’800’,  
  5.  filebrowserWindowHeight:’600’  
  6. }  
  7. );  

如果都是使用属性的默认值,可直接使用class="ckeditor"

<textareaclass="ckeditor"cols="80"rows="10"></textarea>

配置个性化工具栏需要注意:

工具栏是通过数组来设定的,工具栏的名字以toolbar_<name>的方式命名,其中的<name>是用来赋值给config.toolbar这一变量的,我们可在config.js中定义配置:

其中("-") 为空间栏的水平分割,("/") 为换行。

[javascript]  view plain copy
  1. CKEDITOR.editorConfig = function( config ) {  
  2. config.toolbar_Basic =  
  3.     [  
  4.         ['Bold''Italic''-''NumberedList''BulletedList''-''Link''Unlink','-','About'],  
  5.         ['Styles','Format','Font','FontSize']  
  6.     ];  
  7.     config.toolbar_Full =  
  8.     [  
  9.         ['Source','-','Save','NewPage','Preview','-','Templates'],  
  10.         ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print''SpellChecker''Scayt'],  
  11.         ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],  
  12.         ['Form''Checkbox''Radio''TextField''Textarea''Select''Button''ImageButton''HiddenField'],  
  13.         '/',  
  14.         ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],  
  15.         ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],  
  16.         ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],  
  17.         ['Link','Unlink','Anchor'],  
  18.         ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],  
  19.         '/',  
  20.         ['Styles','Format','Font','FontSize'],  
  21.         ['TextColor','BGColor'],  
  22.         ['Maximize''ShowBlocks','-','About']  
  23.     ];  
  24.     config.toolbar_Standard =  
  25.     [  
  26.         ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],  
  27.         ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],  
  28.         ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],  
  29.         ['Link','Unlink','Anchor'],  
  30.         ['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],  
  31.         '/',  
  32.         ['Styles','Format','Font','FontSize'],  
  33.         ['TextColor','BGColor'],  
  34.         ['Maximize''ShowBlocks','-','Source','-','Undo','Redo']  
  35.        
  36.     ];  
  37.     //工具栏   
  38.     config.toolbar = 'Standard';  
  39.   
  40.     //配置默认配置  
  41.     // Define changes to default configuration here. For example:  
  42.     //config.uiColor = '#AADC6E';  
  43.     config.image_previewText=' '//预览区域显示内容  
  44.     config.language = 'zh-cn';//配置语言  en 英文、zh-cn 中文  
  45.       
  46.     //与CKFinder集成  
  47.     config.filebrowserBrowseUrl = '/ckfinder/ckfinder.html';    
  48.     config.filebrowserImageBrowseUrl = '/ckfinder/ckfinder.html?type=Images';    
  49.     config.filebrowserFlashBrowseUrl = '/ckfinder/ckfinder.html?type=Flash';    
  50.     config.filebrowserUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Files';   
  51.     config.filebrowserImageUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Images';   
  52.     config.filebrowserFlashUploadUrl = '/ckfinder/core/connector/java/connector.java?command=QuickUpload&type=Flash' ;  
  53.       
  54.     config.filebrowserWindowWidth = '900';   
  55.     config.filebrowserWindowHeight = '600';  
  56. };  
注意: toolbar_<name>的定义必须在 config.toolbar = 'Standard';之前才有效!

4、如果需要单独使用ckfinder,在页面中引入ckfinder.js文件

<script src="/ckfinder/ckfinder.js"></script>

1)加入JS代码:

functionBrowseServer(inputId) { 
var finder = new CKFinder(); 
finder.basePath = '/ckfinder/'; //导入CKFinder的路径 
finder.selectActionFunction = SetFileField; //设置文件被选中时的函数 
finder.selectActionData = inputId; //接收地址的inputID 
finder.popup(); 

//文件选中时执行 
functionSetFileField(fileUrl,data) 

document.getElementById(data["selectActionData"]).value = fileUrl; 
}

2)页面中加入input
<input id="picurl" type="text" name="picurl" value="" />

<input type="button" value="pic server"  onclick="BrowseServer('picurl');" />

注意:必须有id,并且id的值和后面的BrowseServer()函数参数值相对应。

5、ckfinder的创建中文文件夹乱码、以及上传中文文件和包含中文路径的时候,中文会被转码,解决如下:

解决创建中文文件夹乱码:

在tomcat的server.xml中添加URIEncoding="UTF-8"

<Connector port="8181" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8" />

解决文件中文名被转码:

将ckfinder.js中的
getUrl:function(){return this.folder.getUrl()+encodeURIComponent(this.name);}
改为:
getUrl:function(){return this.folder.getUrl()+this.name;}


解决中文路径被转码:

将ckfinder.js中的
getUrl:function(){var v=this,w='';while(v){w=v.isRoot?this.app.getResourceType(v.type).url+w:encodeURIComponent(v.name)+'/'+w;v=v.parent;}return w;}
改为:
getUrl:function(){var v=this,w='';while(v){w=v.isRoot?this.app.getResourceType(v.type).url+w:v.name+'/'+w;v=v.parent;}return w;}

这2个地方找得幸苦啊哭,特别是中文路径的问题快哭了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sheng__sheng/article/details/12314285

智能推荐

Scala学习笔记 --- Return keyword is redundant.....-程序员宅基地

最近在写Scala的时候会给出如下的提示,Return keyword is redundant…..,如图:当在函数写上return的时候,会有提示return关键字是多余的?怎么回事呢?整理了一些文章后总结如下: 函数就是纯函数,只做处理 要写函数而不是指令函数式编程的一个重要的概念就是要尽量使代码由无状态的函数构成,而不是给计算..._return keyword is redundant

常用设计模式-策略模式+工厂模式+模板模式(使用场景、解决方案)_java 设计模式 工厂+策略-程序员宅基地

在策略模式+工厂模式中,没有使用到模板模式,因为张三和李四的业务逻辑都是调用AAA方法,如果现在在增加一个方法,次方法只需要李四一人去实现BBB方法,此时张三的handel中就会报错,需要张三也去实现BBB方法,这时就出现了模板模式,即将接口变为抽象类,实现自己的方法即可.优化前后: @Test String noDesign2() { String name = "张三"; if (name.equals("张三")) { // 业务逻辑A return "张三完成任务_java 设计模式 工厂+策略

给项目管理一双慧眼-程序员宅基地

在诸多招聘广告中,经常可以看见一些IT软件企业或集成商对他们的技术部门经理或者项目经理是这样要求的:  有XX行业X年软件开发经验  精通XXX编程  语言掌握XXX数据库……  这里面隐含着什么意义?那就是对于大多数IT企业,他们眼中的技术部门经理或项目经理都是技术高手,部门员工碰到什么搞不定的技术难题,这些经理一出手,一切搞定,赢来阵阵喝彩。这应该是这些经理们的第一职责吗?显然...

C语言学习笔记之结构体_c语言联合体位域定义不写变量可以吗_BJTUYBYUAN的博客-程序员宅基地

10.1C语言结构体数组:存放相同数据类型结构体:可以存放多种数据类型结构体如何定义呢?struct 结构体标签名{结构体包含的成员变量或数组;}结构体变量;结构体是多种数据类型的集合,它可以包含多个变量和数组,这些数据可以是多种类型#include<stdio.h>int main() { struct student { char *name;//指针变量 int num; int age; char group; float score; };/_c语言联合体位域定义不写变量可以吗

oracle 12.1.0.2 create pluggable database_create pluggable database apcmes from apcmes@db_sm-程序员宅基地

os: centos 7.4db: oracle 12.1.0.2Creating a PDB by Using the Seed: ExampleCREATE PLUGGABLE DATABASE ORCLPDB2 ADMIN USER pdbadmin IDENTIFIED BY pdbadminpdbadmin ROLES = (dba) DEFAULT TABLESPAC..._create pluggable database apcmes from apcmes@db_smes file_name_convert=

初识小熊派——小熊派功能简介-程序员宅基地

小熊派功能简介  小熊派IoT开发板一款由南京小熊派智能科技有限公司联合华为技术有限公司基于STM32L431RCT6设计的高性能物联网开发板。开发板充分考虑物联网感知层设备的多样性,具有强大的可扩展性,用于提供给开发者评估及快速设计相关物联网的应用产品。1、创新设计  通信方式和行业案例传感器可随意搭配是小熊派IoT开发板的一大亮点,这是有别于传统的开发板的一点,给予开发者更大的想象和创..._小熊派

随便推点

C语言运算符优先级 详细列表-程序员宅基地

http://www.slyar.com/blog/c-operator-priority.html文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。优先级运算符名称或含义

统计学基础学习笔记_统计基础笔记-程序员宅基地

— 基础部分1.为什么要学统计学统计学: 是一门收集、整理和分析统计数据的方法科学。 其目的是探索数据内在的数量规律性,以达到对客观事物的科学认识。 统计学研究随机现象(事前不可预言),以推断为特征,”由部分推及全体“的思想贯穿于统计学的始终。 a.如果你想在大数据,机器学习领域有所建树。b.如果你想在经济学方面有所发展..._统计基础笔记

黑马程序员:流控语句中的if-else的三种结构-程序员宅基地

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 这篇主要写if语句和switch语句。 首先是if语句,它主要有三种结构:第一种:if结构语法:if(关系表达式或者bool类型的值){ 将要执行的代码;}执行过程:程序运行到if处

什么是并口硬盘和串口硬盘?有何区别?_硬盘串口和并口的区别图解-程序员宅基地

随着科技技术水平的逐渐成熟,如今越来越多的主板和硬盘都开始支持串行ATA(SATA)接口,逐步取代传统的并行ATA(PATA)接口。那么,到底什么是并口硬盘和串口硬盘?它们又有何区别呢?SATA硬盘,也就是一般所说的串口硬盘,使用的是高频率的串行通信方式,其典型的接口外观如下图:PATAIDE硬盘,或称IDE硬盘,并口硬盘,使用的是多条信号线并行通信方式,其典型的接口外观如下图:其实串口硬盘和并口硬盘的主要区别在于硬盘与主板的传输模式不同,物理接口也不一样。什么是并行ATAATA其实是IDE设备的_硬盘串口和并口的区别图解

强制双休!腾讯调整加班机制,21点前必须离开工位-程序员宅基地

综合整理:程序员的那些事(ID:iProgrammer)最近鹅厂光子工作室“强制员工不加班要双休”的消息,在网上火了。有自称鹅厂员工的网友发帖问,这会给国内互联网公司开个好头吗?他提到的..._腾讯上班时间可以外出吗?

数据结构之---C语言实现二叉树的顺序存储_二叉树的顺序存储结构代码-程序员宅基地

数据结构之---C语言实现二叉树的顺序存储_二叉树的顺序存储结构代码

推荐文章

热门文章

相关标签