由于项目需要,在网上找了个富文本编辑框wangEditor,抱着试一试的态度用了一下,原以为这款个人开发维护的插件会有不少bug,使用之后经过我们测试人员全方位的测试检验,基本符合需求,并且较之前使用的simditor包含了更多的小功能。
wangEditor
wangEditor 是一款开源免费的基于javascript和css开发的html富文本编辑器。从下面的预览图可以看到增加了代码块、地图,插入表格等一些不常用、但正好是我们需要的小功能,而且有Demo和比较完整的文档,上手很快,但对于我这样的业余前端来说使用中还是有一些需要注意的地方。
初始化
使用前首先在页面添加一个id=content的编辑器div元素(textarea也可以),然后使用new wangEditor(‘content’)对其进行初始化即可,但是需要注意的是初始化js放在body的最后才能生效,如下所示,不知是何原因。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <!DOCTYPE html> <html> <meta charset="UTF-8" /> <title>joylink后台</title> <body> <div class="container-fluid"> <div id="editArea" style="display:none;"> <div style="width:80%; margin-top:50px;"> <div id="content" style="height:400px;max-height:500px;"> <p>请输入内容...</p> </div> <div style="margin-top:10px;"> <button type="button" class="btn btn-success btn_save_content" id="saveContent">保存</button> <div class="error" style="margin-top:15px;margin-left:30px;"></div> </div> </div> </div> </div> <script type="text/javascript" src="${rc.contextPath}/resources/js/wangEditor.min.js"></script> <script> window.wangEditor.$body = $('body'); var editor = new wangEditor('content'); editor.config.uploadImgUrl = '/jlNav/uploadImg'; editor.create(); </script> </body> </html>
|
图片上传
经过第一步初始化后大多数功能已经可以使用,但是图片上传只能通过url形式,还不能上传本地图片,因为本地图片是要传到服务器存储的,需要后台的配合。wangEditor里只需要配置一下图片上传请求的url如下所示,然后就可以看到编辑框图片上传的位置出现了选择本地图片的选项。
editor.config.uploadImgUrl = ‘/jlNav/uploadImg’; //controller的请求地址
配置完编辑器后,本地图片上传时,编辑器便会向你配置的url发送一个post请求如下,在相应的controller里对文件进行上传处理返回该图片的url即可。
Request URL://jverson.com/jlNav/uploadImg
Request Method:POST
——WebKitFormBoundarybWoD7tBsuqM8uVkn
Content-Disposition: form-data;
name=”wangEditorH5File”;
filename=”8724976127960344.jpeg”
Content-Type: image/jpeg
对应 /jlNav/uploadImg 请求的controller在springMVC环境下代码如下所示,同时可以支持图片的form提交、复制粘贴、拖拽上传等多种上传方式,不同方式对应的Content-Disposition中的name不同,在controller中处理的时候需要注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @ResponseBody @RequestMapping(value = "/uploadImg", method = {RequestMethod.POST}, produces = {"application/json;charset=UTF-8"}) public String uploadImg(HttpServletRequest request, @RequestParam(value = "wangEditorH5File", required=false) MultipartFile formFile, @RequestParam(value = "wangEditorPasteFile", required=false) MultipartFile pasteFile, @RequestParam(value = "wangEditorDragFile", required=false) MultipartFile dragFile){ MultipartFile file = (formFile!=null?formFile:pasteFile!=null?pasteFile:dragFile!=null?dragFile:null); String imgUrl = null; if (file != null) { try { imgUrl = fileUpDownUtil.uploadImgWithDFS(file.getInputStream()); if (StringUtils.isNotBlank(imgUrl)) { imgUrl = fileUpDownUtil.getDFSDefaultImgURI(imgUrl); } } catch (Exception e) { e.printStackTrace(); } } return imgUrl; }
|
附注
作为个人开发维护的一款功能完善的实用插件,我相信作者付出了大量的精力和时间,感谢作者的开源精神,作为免费用户和受益者,不强制但应该给予作者小小的捐赠,不成敬意,但这是向劳动和分享精神的一种致敬。