xhEditor在线编辑器使用实例

使用xhEditor的最大好处就是不用去处理烦人的HTML标签问题,研究了一天,记录备用

前台HTML:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Editor.aspx.cs" Inherits="xhEditor在线编辑器.Editor" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

    <script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>

    <script src="Scripts/xhEditor/xheditor-1.2.1.min.js" type="text/javascript"></script>

    <script src="Scripts/xhEditor/xheditor_lang/zh-cn.js" type="text/javascript"></script>

    <script type="text/javascript">

        $(function () {

            //初始化编辑器

            $('#elem1').xheditor({ tools: 'full', width: '99.4%', height: '426px', forcePtag: false,

                upBtnText: '上传', upMultiple: 1, upLinkUrl: 'upload.aspx',

                upImgUrl: 'upload.aspx', upImgExt: 'jpg,jpeg,gif,png',

                upFlashUrl: 'upload.aspx', upFlashExt: 'swf',

                upMediaUrl: 'upload.aspx', upMediaExt: 'wmv,avi,wma,mp3,mid'

            });

        });

        //存值

        function setValue() {

            $.ajax({

                cache: false,

                url: "upload.ashx",

                data: { "text": $("#elem1").val() },

                success: function (e) {

                    //alert("success");

                    window.location.href = "Success.aspx";

                }

            });

        }

        //取值

        function getText() {

            $.ajax({

                cache: false,

                url: "getValue.ashx",

                success: function (e) {

                    //alert(e);

                    $("#getDIV").append(e);

                }

            });

        }

    </script>

</head>

<body>

    <form id="form1" method="POST">

    <div id="editorDIV" style="width: 900px">

        <hr />

        <br />

        <textarea id="elem1" name="content" >test</textarea>

        <br />

        <hr />

        <input type="button" value="提交" onclick="setValue()" />

        <input type="reset" name="reset" value="重置" />

        <input type="button" onclick="getText()" value="取值"/>

    </div>

    <hr/>

    <div id = "getDIV">

        

    </div>

    </form>

</body>

</html>

<%--使用指南http://xheditor.com/manual/1--%>


处理后台页:

 

 

<%@ Page Language="C#" AutoEventWireup="true" CodePage="65001" %>



<%@ Import Namespace="System" %>

<%@ Import Namespace="System.Collections" %>

<%@ Import Namespace="System.Configuration" %>

<%@ Import Namespace="System.Data" %>

<%@ Import Namespace="System.Web" %>

<%@ Import Namespace="System.Web.Security" %>

<%@ Import Namespace="System.Web.UI" %>

<%@ Import Namespace="System.Web.UI.HtmlControls" %>

<%@ Import Namespace="System.Web.UI.WebControls" %>

<%@ Import Namespace="System.Web.UI.WebControls.WebParts" %>

<%@ Import namespace="System.Data.SqlClient" %>

<script runat="server">

    /*

 * upload demo for c# .net 2.0

 * 

 * @requires xhEditor

 * @author Jediwolf<[email protected]>

 * @licence LGPL(http://www.opensource.org/licenses/lgpl-license.php)

 * 

 * @Version: 0.1.4 (build 111027)

 * 

 * 注1:本程序仅为演示用,请您务必根据自己需求进行相应修改,或者重开发

 * 注2:本程序将HTML5上传与普通POST上传转换为byte类型统一处理

 * 

 */



    protected void Page_Load(object sender, EventArgs e)

    {

        Response.Charset = "UTF-8";



        // 初始化一大堆变量

        string inputname = "filedata";//表单文件域name

        string attachdir = "upload";     // 上传文件保存路径,结尾不要带/

        int dirtype = 1;                 // 1:按天存入目录 2:按月存入目录 3:按扩展名存目录  建议使用按天存

        int maxattachsize = 2097152;     // 最大上传大小,默认是2M

        string upext = "txt,rar,zip,jpg,jpeg,gif,png,swf,wmv,avi,wma,mp3,mid";    // 上传扩展名

        int msgtype = 2;                 //返回上传参数的格式:1,只返回url,2,返回参数数组

        string immediate = Request.QueryString["immediate"];//立即上传模式,仅为演示用

        byte[] file;                     // 统一转换为byte数组处理

        string localname = "";

        string disposition = Request.ServerVariables["HTTP_CONTENT_DISPOSITION"];



        string err = "";

        string msg = "''";



        if (disposition != null)

        {

            // HTML5上传

            file = Request.BinaryRead(Request.TotalBytes);

            localname = Server.UrlDecode(Regex.Match(disposition, "filename=\"(.+?)\"").Groups[1].Value);// 读取原始文件名

        }

        else

        {

            HttpFileCollection filecollection = Request.Files;

            HttpPostedFile postedfile = filecollection.Get(inputname);



            // 读取原始文件名

            localname = postedfile.FileName;

            // 初始化byte长度.

            file = new Byte[postedfile.ContentLength];



            // 转换为byte类型

            System.IO.Stream stream = postedfile.InputStream;

            stream.Read(file, 0, postedfile.ContentLength);

            stream.Close();



            filecollection = null;

        }



        if (file.Length == 0) err = "无数据提交";

        else

        {

            if (file.Length > maxattachsize) err = "文件大小超过" + maxattachsize + "字节";

            else

            {

                string attach_dir, attach_subdir, filename, extension, target;



                // 取上载文件后缀名

                extension = GetFileExt(localname);



                if (("," + upext + ",").IndexOf("," + extension + ",") < 0) err = "上传文件扩展名必需为:" + upext;

                else

                {

                    switch (dirtype)

                    {

                        case 2:

                            attach_subdir = "month_" + DateTime.Now.ToString("yyMM");

                            break;

                        case 3:

                            attach_subdir = "ext_" + extension;

                            break;

                        default:

                            attach_subdir = "day_" + DateTime.Now.ToString("yyMMdd");

                            break;

                    }

                    attach_dir = attachdir + "/" + attach_subdir + "/";



                    // 生成随机文件名

                    Random random = new Random(DateTime.Now.Millisecond);

                    filename = DateTime.Now.ToString("yyyyMMddhhmmss") + random.Next(10000) + "." + extension;



                    target = attach_dir + filename;

                    //记录文件名和文件路径

                    Session["filename"] = filename;

                    Session["route"] = target;

                    try

                    {

                        CreateFolder(Server.MapPath(attach_dir));



                        System.IO.FileStream fs = new System.IO.FileStream(Server.MapPath(target), System.IO.FileMode.Create, System.IO.FileAccess.Write);

                        fs.Write(file, 0, file.Length);

                        fs.Flush();

                        fs.Close();

                    }

                    catch (Exception ex)

                    {

                        err = ex.Message.ToString();

                    }



                    // 立即模式判断

                    if (immediate == "1") target = "!" + target;

                    target = jsonString(target);

                    if (msgtype == 1) msg = "'" + target + "'";

                    else msg = "{'url':'" + target + "','localname':'" + jsonString(localname) + "','id':'1'}";

                }

            }

        }



        file = null;



        Response.Write("{'err':'" + jsonString(err) + "','msg':" + msg + "}");

    }





    string jsonString(string str)

    {

        str = str.Replace("\\", "\\\\");

        str = str.Replace("/", "\\/");

        str = str.Replace("'", "\\'");

        return str;

    }





    string GetFileExt(string FullPath)

    {

        if (FullPath != "") return FullPath.Substring(FullPath.LastIndexOf('.') + 1).ToLower();

        else return "";

    }



    void CreateFolder(string FolderPath)

    {

        if (!System.IO.Directory.Exists(FolderPath)) System.IO.Directory.CreateDirectory(FolderPath);

    }

    

</script>


保存到数据库:

 

 

using System;

using System.Collections.Generic;

using System.Data.SqlClient;

using System.Linq;

using System.Web;

using System.Data;



namespace xhEditor在线编辑器

{

    /// <summary>

    /// Summary description for getValue

    /// </summary>

    public class getValue : IHttpHandler

    {



        public void ProcessRequest(HttpContext context)

        {

            context.Response.ContentType = "text/plain";

            //context.Response.Write("Hello World");

            string connStr = "server = .;database = Test1;uid=sa;pwd=password";

            using (SqlConnection conn = new SqlConnection(connStr))

            {

                string id = Guid.NewGuid().ToString();

                string sqlstr = "select top 1 text from dbo.editor";

                using (SqlCommand cmd = new SqlCommand(sqlstr, conn))

                {

                    conn.Open();

                    using (SqlDataAdapter dapter = new SqlDataAdapter(cmd))

                    {

                        DataTable ds = new DataTable();

                        dapter.Fill(ds);

                        context.Response.Write(ds.Rows[0][0].ToString());

                    }

                }

            }

        }



        public bool IsReusable

        {

            get

            {

                return false;

            }

        }

    }

}

 

从数据库读取数据:

 

using System;

using System.Data.SqlClient;

using System.Linq;

using System.Web;

using System.Data;

namespace xhEditor在线编辑器

{

    public partial class Success : System.Web.UI.Page

    {

        protected string text = string.Empty;

        protected void Page_Load(object sender, EventArgs e)

        {

            string connStr = "server = .;database = Test1;uid=sa;pwd=password";

            using (SqlConnection conn = new SqlConnection(connStr))

            {

                string id = Guid.NewGuid().ToString();

                string sqlstr = "select top 1 text from dbo.editor";

                using (SqlCommand cmd = new SqlCommand(sqlstr, conn))

                {

                    conn.Open();

                    using (SqlDataAdapter dapter = new SqlDataAdapter(cmd))

                    {

                        DataTable ds = new DataTable();

                        dapter.Fill(ds);

                        text = ds.Rows[0][0].ToString();

                    }

                }

            }

        }

    }

}


层次结构:

 

xhEditor在线编辑器使用实例

数据库结构:

xhEditor在线编辑器使用实例

 

你可能感兴趣的:(xheditor)