CKeditor是一款富文本编辑器,本文将用极为简单的方式介绍一下它的使用和困扰大家很久的图片上传问题,要有耐心。
第一步:如何使用
1.官网下载https://ckeditor.com/ckeditor...,分别是简易版、标准版、全面版、自定义四个选项,下载哪个根据你的诉求来。
2.下载成功后---->解压得到一个ckeditor文件夹----->把ckeditor文件夹上传到服务器上(或本地的静态服务上)------>本地新建一个demo.htm如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <textarea name="editor1" id="editor1" class="ckeditor" rows="10" cols="80"></textarea> <script src="http://自己的服务器地址/ckeditor/ckeditor.js"></script> </body> </html>
3.运行demo.html就能看见编辑器了 获取编辑器数据用 var data = CKEDITOR.instances.editor1.getData()
第二步:如何通过编辑器上传图片到服务器
1.找到ckeditor/config.js,原来乱七八糟的全删了,修改如下
CKEDITOR.editorConfig = function( config ) { config.filebrowserImageUploadUrl = '/void/imgupload/ckeditorUpload?type=image'; };
2.解释一下,这个'/void/imgupload/ckeditorUpload'是自己定义的本地接收图片的接口,你需要写接收保存图片的逻辑
3.重点!!这个接口接受保存完图片怎么反馈呢??答案是:新版本的ckeditor要返回json格式如下:
{ "uploaded": 1, //写死的 "fileName": filename, //图片名 "url": url //上传服务器的图片的url }
旧版本要返回js代码!!!如下:
callback = request.args.get("CKEditorFuncNum") resData = "<script type="text/javascript">" resData += "window.parent.CKEDITOR.tools.callFunction(" + callback + ",'" + url + "',''" + ")" resData += "</script>" return resData
解释:url是上传服务器的图片的url callback是要接收get参数,参数名是“CKEditorFuncNum” ,callback一定不能缺
补充:ckeditor新版旧版怎么区分呢?旧版在请求的时候url有'CKEditorFuncNum'参数,新版则没有(本人见解,不明白留言解答)
==========================================================