07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器

摘要:
过滤器结构。Contents){returnContent;}//要防止黑客恶意绕过,请确定文件后缀if(!

LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui

上次说的是强大的百度编辑器 http://www.cnblogs.com/dunitian/p/5551701.html 这次说下简洁版而又不失功能的WangEditor

先看看效果

07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器第1张

基本上常用功能都有了,下面说下完整的demo:

前端案例:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>WangEditor</title>
    <meta charset="utf-8" />
    <link href="http://t.zoukankan.com/Script/WangEditor/css/wangEditor.min.css" rel="stylesheet" />
</head>
<body>
    <div   style="min-height:20em"></div>
    <br />
    <input   type="button" value="获取HTML" />  
    <input   type="button" value="获取Text" />
    <div id="msg"></div>
    <script src="http://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
    <script src="http://t.zoukankan.com/Script/jquery-1.8.3.min.js"></script>
    <script src="http://t.zoukankan.com/Script/WangEditor/js/wangEditor.min.js"></script>
    <script type="text/javascript">        
        var editor = new wangEditor('edit');       
        // 上传图片路径
        editor.config.uploadImgUrl = '/Home/Upload';
        // 设置统一参数名
        editor.config.uploadImgFileName = 'file';       
        //编辑器创建
        editor.create();

        $('#btn1').click(function () {
            // 获取编辑器区域完整html代码
            var html = editor.$txt.html();
            $('#msg').html(html);
        });

        $('#btn2').click(function () {
            // 获取编辑器纯文本内容
            var text = editor.$txt.text();
            // 获取格式化后的纯文本
            //var formatText = editor.$txt.formatText();
            $('#msg').html(text);
        });
    </script>
</body>
</html>

后端代码:(自己写的,如果有什么问题欢迎联系我)

/// <summary>
        /// 图片上传
        /// </summary>
        /// <returns></returns>
        public ContentResult Upload(HttpPostedFileBase file)
        {
            if (file == null) { return Content("error|文件不能为空"); }
            if (file.ContentLength > 10485760) { return Content("error|文件10M以内"); }
            //如果是上传文件,再添加其他格式即可
            string filterStr = ".gif,.jpg,.jpeg,.bmp,.png";
            string fileExt = Path.GetExtension(file.FileName).ToLower();
            if (!filterStr.Contains(fileExt)) { return Content("error|文件后缀不对"); }
            //防止黑客恶意绕过,从根本上判断下文件后缀
            if (!file.InputStream.CheckingExt())
            {
                //todo:一次危险记录
                return Content("error|文件后缀不对");
            }

            //todo: md5判断一下文件是否已经上传过,如果已经上传直接返回 return Content(缩略图地址#sqlPath);

            string path = string.Format("{0}/{1}", "/lotFiles", DateTime.Now.ToString("yyyy-MM-dd"));
            string fileName = string.Format("{0}{1}", Guid.NewGuid().ToString("N"), fileExt);
            string sqlPath = string.Format("{0}/{1}", path, fileName);
            string dirPath = Request.MapPath(path);
            if (!Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath); }
            try
            {
                //todo:未来写缩略图的代码
                file.SaveAs(Path.Combine(dirPath, fileName));
                //todo: 未来写存数据库的Code
            }
            catch { return Content("error|文件保存失败"); }
            return Content(string.Format("{0}#{1}", sqlPath, sqlPath));//第一个sqlPath以后换成缩略图的地址
        }
/// <summary>
    /// 判断扩展名是否是指定类型---默认是判断图片格式,符合返回true(没有释放stream,请手动:file.InputStream.Dispose();)
    /// eg:图片+压缩+文档:"7173", "255216", "6677", "13780", "8297", "55122", "8075", "208207"
    /// eg:img,"7173", "255216", "6677", "13780" //gif  //jpg  //bmp //png
    /// eg:file,"8297", "55122", "8075", "208207" //rar //7z //zip + 文档系列
    /// </summary>
    /// <param name="stream">文件流</param>
    /// <param name="fileTypes">文件扩展名</param>
    /// <returns></returns>
    public static bool CheckingExt(this Stream stream, params string[] fileTypes)
    {
        if (fileTypes == null || fileTypes.Length == 0) { fileTypes = new string[] { "7173", "255216", "6677", "13780" }; }
        bool result = false;
        string fileclass = "";

        #region 读取头两个字节
        var reader = new BinaryReader(stream);
        byte[] buff = new byte[2];
        try
        {
            reader.Read(buff, 0, 2);//读取每个文件的头两个字节
            fileclass = buff[0].ToString() + buff[1].ToString();
        }
        catch (System.Exception ex) { stream.Dispose(); reader.Dispose(); return false; }
        #endregion

        #region 校验
        for (int i = 0; i < fileTypes.Length; i++)
        {
            if (fileclass == fileTypes[i])
            {
                result = true;
                break;
            }
        }
        #endregion
        return result;
    }

完整demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetCode/3.常用技能/03.Editor/03.WangEditor

免责声明:文章转载自《07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java.lang.OutOfMemoryError: Java heap space解决方法广度优先的sql树形查询下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在vue中使用tinymce富文本编辑器,解决tinymce在dialog对话框中层级太低的问题

1、安装 npm install tinymce -S 2、把node_modules inymce里面的文件 包括tinymce文件夹 全部复制到static文件夹下面,如下图 3、tinymce默认是英文界面,还需要下载一个中文语言包zh_CN.js https://www.tiny.cloud/get-tiny/language-packages...

kindEditor上传图片错误,不成功的问题总结

自己的网站是用的GB2312的编码,ASP做的网站。 原来用了ewebeditor 的后台HTML编译器,在使用了新空间后,编译器上传图片不成功了。 我在网上找ewebeditor相关的资料,发现资料很少,自己去研究太花时间了,ewebeditor也不支持非IE的浏览器。还是另外使用一个HTML后台编辑器吧。 在网上搜索了几个有名的后台编辑器,如下: CK...

Vue 3 组件开发:搭建基于 Vite 的在线表格编辑系统(组件集成)

通过前文的学习,我们已经用 Vite 搭建出了Vue 3 的项目原型。今天,我们将基于这个原型,集成 SpreadJS 电子表格组件和在线编辑器组件,使其具备 Excel公式计算、在线导入导出 Excel 文档、数据透视表和可视化分析能力,实现在线表格编辑系统的雏形。 设计思路 · 同时创建SpreadJS 和Designer(表格编辑器)两个组件,用切换...

Js 之移动端富文本插件(wangEditor)

文档:https://www.kancloud.cn/wangfupeng/wangeditor3/332599 下载:https://github.com/wangfupeng1988/wangEditor/releases 一、效果图  二、代码示例 <div id="editorContainer" style="margin-bottom...

OS:VM虚拟机连不上网络

VM虚拟机连接不上网络 一、问题描述:      1、我的虚拟机网络连接方式“桥接模式”。虚拟机的网络显示“正常”,但是无法连接网络。如何解决?   2、解决办法:在“虚拟网络编辑器”中,选择“桥接模式”,点击“还原默认设置”。在“虚拟网络编辑器”中,选择“你的网络连接模式”,点击“还原默认设置”。 二、解决方案:   1、找到“虚拟网络编辑器”(编辑 -...

用Navicat Premium图标编辑器创建表的方法

Navicat Premium 作为一款常见的数据库管理工具,功能非常的强大。其中图表编辑器由画布和垂直的工具栏组成,方便设计图表,例如添加对象、设置图表格式和打印模型等。一些新手用户对这方面的使用不是很了解,下面给大家分享一下用Navicat Premium图标编辑器创建表的方法? 点击“新建图表”即可创建一个新的图表。 创建一个新的表,从图表工具栏点击...