1. wangEditor 轻量级 web 富文本编辑器,配置方便,使用简单。支持 IE10+ 浏览器。
3. 页面引入 CSS 部分
1 <link rel="stylesheet" href="/static/assets/plugins/wangEditor/wangEditor.min.css" />
JS 部分
1 <script src="/static/assets/plugins/wangEditor/wangEditor.min.js"></script>
4. 启用 wangEditor 只需要一个 div 元素,用 JavaScript 代码启用即可
HTML 结构如下:
JavaScript 启用代码如下:
1 2 3 var E = window.wangEditor; var editor = new E('#editor'); editor.create();
5. 服务端支持 配置方式同 Dropzone 图片上传插件
6. 控制器关键代码参考 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.UUID; /** * 文件上传控制器 * <p>Title: UploadController</p> * <p>Description: </p> * * @author Lusifer * @version 1.0.0 * @date 2018/6/27 14:32 */ @Controller public class UploadController { private static final String UPLOAD_PATH = "/static/upload/"; /** * 文件上传 * * @return */ @ResponseBody @RequestMapping(value = "upload", method = RequestMethod.POST) public Map<String, Object> upload(MultipartFile editorFile, HttpServletRequest request) { Map<String, Object> result = new HashMap<>(); // 获取文件后缀 String fileName = editorFile.getOriginalFilename(); String fileSuffix = fileName.substring(fileName.lastIndexOf(".")); // 文件存放路径 String filePath = request.getSession().getServletContext().getRealPath(UPLOAD_PATH); // 判断路径是否存在,不存在则创建文件夹 File file = new File(filePath); if (!file.exists()) { file.mkdir(); } // 将文件写入目标 file = new File(filePath, UUID.randomUUID() + fileSuffix); try { editorFile.transferTo(file); } catch (IOException e) { e.printStackTrace(); } // 获取服务端路径 String serverPath = String.format("%s://%s:%s%s%s", request.getScheme(), request.getServerName(), request.getServerPort(), request.getContextPath(), UPLOAD_PATH); // 返回给 wangEditor 的数据格式 result.put("errno", 0); result.put("data", new String[]{serverPath + file.getName()}); return result; } }
相比 Dropzone
图片上传插件 一节,控制器代码的主要差别在于接口返回的数据格式,官方要求的格式如下:
1 2 3 4 5 6 7 8 9 10 11 12 { // errno 即错误代码,0 表示没有错误。 // 如果有错误,errno != 0,可通过下文中的监听函数 fail 拿到该错误码进行自定义处理 "errno": 0, // data 是一个数组,返回若干图片的线上地址 "data": [ "图片1地址", "图片2地址", "……" ] }