从官网http://www.ckeditor.com/下载CKEditor,根据需要可以选择基本,标准,完整或自定义版,本篇文章中使用的是CKEditor_4.7.0_full完整版。
首先集成CKEditor到所需要的的页面,具体代码如下
<html>
<head>
<title>CKEditor集成</title>
<!-- 引入ckeditor库文件 -->
<script src="../jbsage/js/ckeditor_4.7.0_full/ckeditor.js"></script>
</head>
<body>
<textarea id="content"></textarea>
<script>
//初始化编辑器,将它应用到id为editor的元素上
CKEDITOR.replace('content');
</script>
</body>
</html>
浏览器打开页面之后就会看到CKEditor的编辑器,编辑器中有插入图片的功能,如下图所示:
默认只能输入图片URL不能上传本地图片,必须要先开启上传功能,怎么开启前端的上传功能?很简单,只用对刚才的初始化编辑器代码稍作修改即可,把这一行代码
CKEDITOR.replace('content');
修改成:
CKEDITOR.replace('content',{
//浏览服务器地址,从服务器获取图片列表
filebrowserBrowseUrl:'http://www.jbsage.com/fileUpload.php?t=0&type=image',
//图片上传地址,在服务器上保存上传的图片
filebrowserUploadUrl:'http://www.jbsage.com/fileUpload.php?t=1&type=image',
language:'zh-cn',
});


上面两幅图,是添加图片浏览和上传功能之后,第二个界面上多了两个操作按钮。
切换到“上传”分页,可以看到,CKEditoer的上传功能添加成功,如下图所示:
在CKEditoer编辑器中配置filebrowserBrowseUrl,配置好了之后将显示一个“浏览服务器”按钮,用户可以点击该按钮,调用刚才指定的地址“http://www.jbsage.com/fileUpload.php?t=0&type=image” 去获取服务器上的图片列表。
filebrowserUploadUrl,配置好了之后插入图片窗口将多出一个“上传”标签,用户可以在这里选择本地图片,点上传后图片将被发送到我们配置的地址“http://www.jbsage.com/fileUpload.php?t=1&type=image”。
至此,就在Web前端完成了CKEditor图片浏览和上传的界面操作部分,接下来就需要在服务端实现图片上传功能。CKEditor编辑器将图片以'upload'的名字上传,同时还会带上一个CKEditorFuncNum的参数,这个参数用来回调通知编辑器图片上传的结果。
处理步骤是PHP先获取$_FIile['upload']和$_GET['CKEditorFuncNum'],然后将上传的图片放置到服务上,可以让服务器根据上传结果返回一个调用CKEditor的javascript,这样你就知道上传的刚才上传的服务器的地址了,下面是服务器端的实现过程关键代码:
$num = $_GET['CKEditorFuncNum']; //获得CKEditor的回调id
try {
if(isset($_FILES['upload'])) { //上传的图片的信息存在$_FILES['upload']
$s = new FileService();
//保存上传图片的逻辑,返回图片url
$url = $s->uploadImg($_FILES['upload']['name'], $folder);
//图片上传成功,通知CKEditor图片的url
echo "<script>window.parent.CKEDITOR.tools.callFunction($num, '$url', '');</script>"
}
}catch (Exception $e) {
$erro = $e->getMessage();
//通知CKEditor图片上传失败
echo "<script>window.parent.CKEDITOR.tools.callFunction($num, '', '$erro');</script>"
}
其中$num是之前获取的CKEditorFuncNum,$url是上传成功后访问图片的url,$erro是上传失败时CKEditor需要显示给用户的错误信息。官方网站参考链接:
adding-file-manager-scripts-for-selected-dialog-windows
https://sdk.ckeditor.com/samples/fileupload.html