为什么需要富文本编辑器
RTE目的是提供给不会写HTML代码的用户,编辑出类似WORD格式的WEB文档。
主要应用场景:邮件编写、论坛灌水、电商商品管理、新闻消息模块
常见的富文本编辑器
百度的UEditor、kindEditor、TinyMCE、ckeditor、王福朋的wangEditor
wangEditor的介绍
wangEditor于2014年11月推出,是基于bootstrap的一款富文本编辑器
wangEditor的定位是做最简单、易用、快捷、轻量化的富文本编辑器。
wangEditor(仅支持 IE10+ 的浏览器)
官网:www.wangEditor.com
文档:www.kancloud.cn/wangfupeng/wangeditor3/332599
源码:github.com/wangfupeng1988/wangEditor
Spring MVC整合wangEditor
POM.xml
<!-- 文件上传与下载 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
spring-mvc.xml
<mvc:resources mapping="/upload/**" location="/upload/" cache-period="31536000"/>
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上传文件大小上限,单位为字节(10MB) -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
pojo
public class WangEditor {
private Integer errno; //错误代码, 0标识没有错误
private String[] data; //已上传到图片路径
}
Controller
@Controller
@RequestMapping(value="/upload")
public class UploadController{
@ResponseBody
@RequestMapping(value="wang")
public WangEditor uploadFile(
@RequestParam("myFile") MultipartFile multipartFile,
HttpServletRequest request) {
try {
// 获取服务器真实路径
String realPath = request.getSession().getServletContext().getRealPath("");
InputStream inputStream = multipartFile.getInputStream();
String contextPath = request.getContextPath();
// 服务器根目录的路径
String path = null;
if(contextPath.length()>0) {
path = realPath.replace(contextPath.substring(1), "");
}else{
path = realPath;
}
// 根目录下新建文件夹upload,存放上传图片
String uploadPath = path + "upload";
/* 获取上传文件的后缀 */
String suffix = multipartFile.getOriginalFilename().substring (multipartFile.getOriginalFilename().lastIndexOf("."));
/* 保存文件名称 */
String filename = UUID.randomUUID().toString()+ suffix;
// 将文件上传的服务器根目录下的upload文件夹
File file = new File(uploadPath, filename);
FileUtils.copyInputStreamToFile(inputStream, file);
// 返回图片访问路径
String url = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + "/upload/" + filename;
String[] strs = {url};
WangEditor we = new WangEditor();
we.setErrno(new Integer(0));
we.setData(strs);
return we;
} catch (IOException e) {
//log.error("上传文件失败", e);
e.printStackTrace();
}
return null;
}
HTML页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.toolbar {
border: 1px solid #ccc;
width: 800px;
}
.text {
border: 1px solid #ccc;
height: 400px;
width: 800px;
}
</style>
</head>
<body>
<div id="div1" class="toolbar"></div>
<div style="padding: 5px 0; color: #ccc"></div>
<div id="div2" class="text">
<p>请在此输入内容</p>
</div>
</body>
<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="plugins/wangeditor/wangEditor.min.js"></script>
<script>
var E = window.wangEditor
var editor = new E('#div1', '#div2') // 两个参数也可以传入 elem 对象,class 选择器
//开启debug模式
editor.customConfig.debug = true;
// 关闭粘贴内容中的样式
editor.customConfig.pasteFilterStyle = false
// 忽略粘贴内容中的图片
editor.customConfig.pasteIgnoreImg = true
// 使用 base64 保存图片
//editor.customConfig.uploadImgShowBase64 = true
// 上传图片到服务器
editor.customConfig.uploadFileName = 'myFile'; //设置文件上传的参数名称
editor.customConfig.uploadImgServer = '/upload/wang'; //设置上传文件的服务器路径
editor.customConfig.uploadImgMaxSize = 3 * 1024 * 1024; // 将图片大小限制为 3M
//自定义上传图片事件
editor.customConfig.uploadImgHooks = {
before: function(xhr, editor, files) {
},
success: function(xhr, editor, result) {
console.log("上传成功");
},
fail: function(xhr, editor, result) {
console.log("上传失败,原因是" + result);
},
error: function(xhr, editor) {
console.log("上传出错");
},
timeout: function(xhr, editor) {
console.log("上传超时");
}
}
editor.create()
</script>
<br/>
<button id="editorGetBtn">获取内容</button>
<script>
$("#editorGetBtn").click(function(){
//获取编辑器的内容,带样式
//一般使用这个获取数据,通过ajax发送给服务端 ,然后服务端以String接收,保存到数据库.
alert(editor.txt.html());
});
</script>
</html>
网友评论