kindeditor副文档编辑器

来源:互联网 发布:淘宝换身份证开店 编辑:程序博客网 时间:2024/04/26 23:04

概述

 这个富文本功能特别强大

  支持图片的批量上传和视频上传(只支持flash这种单一的方式很不好,不过可以修改支持的格式,网上有好多例子有心者可以上网学习)等好多功能

目的:

kindeditor是一套开源的html可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容ie、 firefox、chrome、 safari、opera等主流浏览器。 kindeditor使用javascript编写,可以无缝的与java、.net、php、asp等程序接合

问题:

 体积小,加载速度快,但功能十分丰富。

  内置自定义range,完美地支持span标记。

  基于插件的方式设计,所有功能都是插件,增加自定义和扩展功能非常简单。

  修改编辑器风格很容易,只需修改一个CSS文件。

代码:

 引用文件

<link href="~/Kindeditor/themes/default/default.css" rel="stylesheet" />

    <link href="~/Kindeditor/plugins/code/prettify.css" rel="stylesheet" />

    <script src="~/Kindeditor/kindeditor.js"></script>

    <script src="~/Kindeditor/lang/zh_CN.js"></script>

   <script src="~/Kindeditor/plugins/code/prettify.js"></script>

  脚本

 <script>

 

        var editor;

        KindEditor.ready(function (K) {

            editor = K.create('textarea[name="txtContent"]', {

                resizeType: 1,

                uploadJson: '/Home/UploadImages'    这里是图片上传路径

            });

            editor = K.create('textarea[name="content"]', {

                filterMode: false//是否开启过滤模式

            });

        });

 

</script>

  页面

   <form id="formGuestBook" method="post" action="/Home/Add">

                        标题:<input id="Text1" type="text" name="strname" /><br /><br />

                        @*<select id="Select1">

 

                        </select>*@

                        @Html.DropDownList("Tid")

                        <br />

                        <br />

                        <br />

                        <!--类名/方法名-->

                        <textarea id="txtContent" name="txtContent" style="width:800px;height:400px;visibility:hidden;"></textarea>

                        <br />

                        <input type="submit" name="btnSubmitGuestBook" class="btn btn-info" value="提交留言" style="float:right" />

                   </form>

  效果

  控制器方法

/// <summary>

/// 写博文页面

/// </summary>

/// <returns></returns>

public ActionResult WriteBlog()

{

conn.Open();

string sqll = string.Format("select * from T_type");

SqlDataAdapter sd = new SqlDataAdapter(sqll,conn);

DataTable dt = new DataTable();

sd.Fill(dt);

List<JokeType> lis = new List<JokeType>();

foreach (DataRow dr in dt.Rows)

{

JokeType t = new JokeType();

t.Tid = Convert.ToInt32(dr["Tid"]);

t.Tname = dr["Tname"].ToString();

lis.Add(t);

 

}

conn.Close();

ViewBag.Tid = new SelectList(lis, "Tid", "Tname");

return View();

}

/// <summary>

/// 博文保存

/// </summary>

/// <param name="txtContent"></param>

/// <param name="strname"></param>

/// <param name="Tid"></param>

/// <returns></returns>

[ValidateInput(false)]........................................................................................这里一定要注意否则会报错

public ActionResult Add(string txtContent, string strname,int Tid)

{

conn.Open();

T_joke tj = new T_joke();

tj.Tid = Tid;

tj.Jtime = DateTime.Now.ToString("yyyy年MM月dd日hh时mm分");

tj.Uid = Convert.ToInt32(Session["Uid"]);

string sql = string.Format("insert into T_joke values('{0}','{1}','{2}',{3},{4})", strname, txtContent, tj.Jtime, tj.Uid, tj.Tid);

SqlCommand comm = new SqlCommand(sql,conn);

int i = comm.ExecuteNonQuery();

conn.Close();

if (i > 0)

{

return Content("<script>alert('发布成功');location.href='/Home/WriteBlog'</script>");

}

return Content("<script>alert('网络繁忙???请稍后重试');location.href='/Home/WriteBlog'</script>");

}

/// <summary>

/// 上传保存

/// </summary>

/// <returns></returns>

public ActionResult UploadImages()

{

 

//String aspxUrl = HttpContext.Request.Path.Substring(0, HttpContext.Request.Path.LastIndexOf("/") + 1);

String aspxUrl = "";

 

//文件保存目录路径

String savePath = "/Content/KindEditor/attached/";

 

//文件保存目录URL

String saveUrl = aspxUrl + "/Content/KindEditor/attached/";

 

//定义允许上传的文件扩展名

Hashtable extTable = new Hashtable();

extTable.Add("image", "gif,jpg,jpeg,png,bmp");

extTable.Add("flash", "swf,flv");

extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");

extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");

 

//最大文件大小

int maxSize = 999999999;

//this.context = HttpContext;

 

HttpPostedFileBase imgFile = HttpContext.Request.Files["imgFile"];

if (imgFile == null)

{

showError("请选择文件。");

}

 

String dirPath = HttpContext.Server.MapPath(savePath);

if (!Directory.Exists(dirPath))

{

showError("上传目录不存在。");

}

 

String dirName = HttpContext.Request.QueryString["dir"];

if (String.IsNullOrEmpty(dirName))

{

dirName = "image";

}

if (!extTable.ContainsKey(dirName))

{

showError("目录名不正确。");

}

 

String fileName = imgFile.FileName;

String fileExt = Path.GetExtension(fileName).ToLower();

 

if (imgFile.InputStream == null || imgFile.InputStream.Length > maxSize)

{

showError("上传文件大小超过限制。");

}

 

if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1)

{

showError("上传文件扩展名是不允许的扩展名。\n只允许" + ((String)extTable[dirName]) + "格式。");

}

 

//创建文件夹

dirPath += dirName + "/";

saveUrl += dirName + "/";

if (!Directory.Exists(dirPath))

{

Directory.CreateDirectory(dirPath);

}

String ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);

dirPath += ymd + "/";

saveUrl += ymd + "/";

if (!Directory.Exists(dirPath))

{

Directory.CreateDirectory(dirPath);

}

 

String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;

String filePath = dirPath + newFileName;

 

imgFile.SaveAs(filePath);

 

String fileUrl = saveUrl + newFileName;

 

Hashtable hash = new Hashtable();

hash["error"] = 0;

hash["url"] = fileUrl;

return Content(JsonMapper.ToJson(hash));

 

//return View();

}

0 0