Tinymce 文本编辑器
一、前端
<%-- 编辑器开始--%>
<script src="../../../Scripts/jquery-1.10.2.min.js"></script>
<script src="../../Content/tinymce/tinymce.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
tinymce.init({
selector: "textarea#content",
//auto_focus: "content",
language: "zh_CN",
theme: "silver",
//引入插件
plugins: 'advlist code searchreplace autolink link image imagetools lists charmap print preview autoresize table charmap wordcount',
//工具栏配置
toolbar: ['code print removeformat| undo redo | fontselect fontsizeselect forecolor backcolor ',
'alignleft aligncenter alignright bold italic bullist numlist indent outdent | blockquote link image wordcount|rotateleft|preview'
],
//覆盖默认上传图片处理事件
images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', '/Common/UpLoadImg');
xhr.onload = function () {
var json;
if (xhr.status < 200 || xhr.status >= 300) {
failure('HTTP Error: ' + xhr.status);
return;
}
json = JSON.parse(xhr.responseText);
if (!json.success) {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(json.response);
};
formData = new FormData();
formData.append('formFile', blobInfo.blob());
xhr.send(formData);
},
file_picker_types: 'file', // 指定允许上传的类型
// 文件上传
file_picker_callback: function (callback, value, meta) {
// 要先模拟出一个input用于上传本地文件
var input = document.createElement('input');
input.setAttribute('type', 'file');
// 你可以给input加accept属性来限制上传的文件类型
// 例如:input.setAttribute('accept', '.jpg,.png')
input.setAttribute('accept', '.doc,.docx,.ppt,.pptx,.pdf,.xls,.xlsx,.txt,.zip,.rar,.7z');
input.click();
input.onchange = function () {
var file = this.files[0];
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', '/Common/UpLoadFile');
xhr.onload = function () {
var json;
if (xhr.status !== 200) {
this.$message.error('HTTP Error: ' + xhr.status);
return
}
json = JSON.parse(xhr.responseText);
if (!json.success) {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
callback(json.response);
}
formData = new FormData();
formData.append('formFile', file, file.name);
xhr.send(formData);
}
},
//TinyMCE 会将所有的 font 元素转换成 span 元素
convert_fonts_to_spans: true,
//换行符会被转换成 br 元素
convert_newlines_to_brs: false,
//在换行处 TinyMCE 会用 BR 元素而不是插入段落
force_br_newlines: false,
//当返回或进入 Mozilla/Firefox 时,这个选项可以打开/关闭段落的建立
force_p_newlines: false,
//这个选项控制是否将换行符从输出的 HTML 中去除。选项默认打开,因为许多服务端系统将换行转换成 <br />,因为文本是在无格式的 textarea 中输入的。使用这个选项可以让所有内容在同一行。
remove_linebreaks: false,
//不能把这个设置去掉,不然图片路径会出错
relative_urls: false,
//不允许拖动大小
resize: false,
font_formats: "宋体=宋体;黑体=黑体;仿宋=仿宋;楷体=楷体;隶书=隶书;幼圆=幼圆;Arial=arial,helvetica,sans-serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
fontsize_formats: "8pt 10pt 12pt 14pt 18pt 24pt 36pt"
});
});
</script>
<%-- 编辑器结束--%>
<textarea id="content" name="content"></textarea>
获取编辑器内容:
tinymce.activeEditor.getContent()
编辑器内容赋值:
//文本编辑器 赋值 $("#content").html("<html></html>");
二、后台部分
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.IO; namespace Web.Controllers { public class CommonController : Controller { public static string[] LimitPictureType = { ".PNG", ".JPG", ".JPEG", ".BMP", ".ICO" }; public static string[] LimitFIleType = { ".DOC", ".DOCX", ".PPT", ".PPTX", ".PDF", ".XLS", ".XLSX", ".TXT", ".ZIP", ".RAR", ".7Z", ".MP4", ".AVI", ".RMVB" }; /// <summary> /// 上传图片 /// </summary> /// <param name="formFile"></param> /// <returns></returns> [HttpPost] public JsonResult UpLoadImg(HttpPostedFileBase formFile) { var data = new MessageModel<string>(); if (formFile == null) { data.success = false; data.msg = "图片保存失败"; return Json(data); } string _path = "_FileUpLoad"; //文件名 var currentPictureWithoutExtension = Path.GetFileNameWithoutExtension(formFile.FileName); //扩展名 var currentPictureExtension = Path.GetExtension(formFile.FileName).ToUpper(); string savePath = Server.MapPath("~/"+ _path) + "/" + DateTime.Now.ToString("yyyyMMdd") + "/"; if (LimitPictureType.Contains(currentPictureExtension)) { if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } string name = DateTime.Now.ToString("yyyyMMddHHmmss") + currentPictureExtension.ToLower(); savePath += name; formFile.SaveAs(savePath); data.success = true; data.msg = "图片保存成功"; //返回路径 data.response = "/" + _path + "/" + DateTime.Now.ToString("yyyyMMdd") + "/" + name; } else { data.success = false; data.msg = "图片保存失败"; } return Json(data); } /// <summary> /// 上传文件 /// </summary> /// <param name="formFile"></param> /// <returns></returns> [HttpPost] public JsonResult UpLoadFile(HttpPostedFileBase formFile) { var data = new MessageModel<string>(); if (formFile == null) { data.success = false; data.msg = "文件保存失败"; return Json(data); } string _path = "_FileUpLoad"; //文件名 var currentPictureWithoutExtension = Path.GetFileNameWithoutExtension(formFile.FileName); //扩展名 var currentPictureExtension = Path.GetExtension(formFile.FileName).ToUpper(); string savePath = Server.MapPath("~/" + _path) + "/" + DateTime.Now.ToString("yyyyMMdd") + "/"; if (LimitFIleType.Contains(currentPictureExtension)) { if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } string name = DateTime.Now.ToString("yyyyMMddHHmmss") + currentPictureExtension.ToLower(); savePath += name; formFile.SaveAs(savePath); data.success = true; data.msg = "文件保存成功"; //返回路径 data.response = "/" + _path + "/" + DateTime.Now.ToString("yyyyMMdd") + "/" + name; } else { data.success = false; data.msg = "文件保存失败"; } return Json(data); } } }
Tinymce 地址:

浙公网安备 33010602011771号