zoukankan      html  css  js  c++  java
  • 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',  '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=" 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<jediwolf@gmail.com>
     * @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();
                        }
                    }
                }
            }
        }
    }


    层次结构:


    数据库结构:


  • 相关阅读:
    The Future of Middleware and the BizTalk Roadmap
    FW: How to spawn a process that runs under the context of the impersonated user in Microsoft ASP.NET pages
    Strips illegal Xml characters
    luogu P2280 激光炸弹(二维前缀和)
    luogu P2704 炮兵阵地(经典状态压缩DP)
    SP1716 GSS3 Can you answer these queries III (线段树维护最大连续子段和)
    二分图判定、匹配问题
    C++语法综合 | 基于char*设计一个字符串类MyString
    luogu P1044 火车进出栈问题(Catalan数)
    C++设计模式 | 三种设计模式基础
  • 原文地址:https://www.cnblogs.com/james1207/p/3400134.html
Copyright © 2011-2022 走看看