• 百度编辑器,Ueditor,C#上传文件



    百度编辑器是一款功能非常强大的在线编辑器,但是百度只提供了ASP,PHP,JSP插入片功能,没有提供C#的上传方式所以感觉有点美中不足,今天我个人做了一个DEMO来实现用C#代码上传插入图片的功能。

    首先先看一下Uediter的目录结构:


    那DEMO.aspx就是我们演示的页面,Up.ashx就是上传图片的处理程序,而uploadfiles文件夹就是我们存放图片的地方

    首先看DEMO.aspx里面只有一些初始化的代码:

    <head runat="server">
        <meta http-equiv="X-UA-Compatible" content="IE=8">
        <title>完整demo</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <script type="text/javascript" charset="utf-8" src="../editor_config.js"></script>
        <script type="text/javascript" charset="utf-8" src="../editor_all.js"></script>
        <link rel="stylesheet" type="text/css" href="../themes/default/ueditor.css" />
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <div id="myEditor" runat="server" style="800px;" ></div>
            <div class="clear">
            </div>
            <div id="btns">
                <input type="button" value="获得内容" onclick="getContent()">
                <input type="button" value="写入内容" onclick="setContent('请添加您的文章!');">
                <input type="button" value="获得纯文本" onclick="getContentTxt()">
                <input type="button" value="判断是否有内容" onclick="hasContent()">
                <input type="button" value="使编辑器获得焦点" onclick="setFocus()">
               
            </div>
            
            <script type="text/javascript">
                //初始化编辑器
                var editor = new baidu.editor.ui.Editor();
                editor.render('myEditor');
                //使用editor.getContent()方法可以获得编辑器的内容
                function getContent() {
                    var arr = [];
                    arr.push(editor.getContent());
                   // alert(arr.join());
                    document.getElementById("HiddenField1").value = arr.join();
                }
                //使用editor.setContent('欢迎使用ueditor')方法可以设置编辑器的内容
                function setContent(txt) {
                    var arr = [];
                    editor.setContent(txt);
                    alert(arr.join("\n"));
                }
                //使用editor.getContentTxt()方法可以获得编辑器的纯文本内容
                function getContentTxt() {
                    var arr = [];
                    arr.push(editor.getContentTxt());
                    alert(arr.join("\n"));
                }
                //使用editor.hasContents()方法判断编辑器里是否有内容
                function hasContent() {
                    var arr = [];
                    arr.push(editor.hasContents());
                    alert(arr.join("\n"));
                }
                function setFocus() {
                    editor.focus();
                }
            </script>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="getContent();" OnClick="Button1_Click" />
            <asp:HiddenField ID="HiddenField1" runat="server" />
        </div>
        </form>
    </body>

    然后后台只有一个输出的:

    protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            protected void Button1_Click(object sender, EventArgs e)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('"+HiddenField1.Value+"');", true);
            }

    然后看up.ashx:

     /// <summary>
        /// up 的摘要说明
        /// </summary>
        public class up : IHttpHandler
        {
            String uploadPath = "uploadfiles/"; //保存路径 
            String fileType = ".jpg,.jpeg,.gif,.png,.bmp"; //文件允许格式 
            Int32 fileSize = 1000; //文件大小限制,单位KB
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                HttpPostedFile oFile = context.Request.Files[0];
                //获取文件的扩展名
                string FullPath = "";
                string state = "SUCCESS";
                string fileExtension = System.IO.Path.GetExtension(oFile.FileName).ToLower();
                if (fileType.ToLower().IndexOf(fileExtension) > -1)
                {
                    if (fileSize * 1024 >= oFile.ContentLength)
                    {
                        string DirectoryPath;
                        DirectoryPath = uploadPath + DateTime.Now.ToString("yyyy-MM");
                        string sFileName = DateTime.Now.ToString("yyyyMMddHHmmssffff"); //文件名称
                        FullPath = "~/" + DirectoryPath + "/" + sFileName + fileExtension;//最终文件路
                        string AbsolutePath = context.Server.MapPath(FullPath);
                        if (!Directory.Exists(context.Server.MapPath("~/" + DirectoryPath)))
                            Directory.CreateDirectory(context.Server.MapPath("~/" + DirectoryPath));
                        try
                        {
                            oFile.SaveAs(AbsolutePath);
                        }
                        catch (Exception e)
                        {
                            state = "上传失败!";
                        }
                    }
                    else
                    {
                        state = "上传文件大小超过限制!";
                    }
                }
                else
                {
                    state = "上传文件扩展名是不允许的扩展名!";
                }
                context.Response.Write("{'url':'" + FullPath.Replace("~","") + "','state':'" + state + "'}");
            }
    

    当这两个文件建完以后我们要上传图片的提交路径,在Ueditor/image/image.html,更改image.html下的如图的代码:


    然后,就可以了,但是会有一个结果就是上传的图片能上传成功,但是不能正确的插入到编辑器中,如下图:



    然后我们将编辑器只的内容显示出来,看看是什么情况:



    是路径不正确,那我们找可以在editor_config.js中进行修改如图:

    将图中的代码改成:URL.replace("/Ueditor/","")就行了



    还有一点就是up.ashx反回的图片的URL地址不能是带 “~”号的,这样的话。就能让传了。我们看一下效果 :


    到这里就完了

  • 相关阅读:
    Web开发常用知识点
    我的PHP之旅:开篇,走入开源的世界
    WPF Knowledge Points ContentControl和ContentPresenter的区别
    WPF Knowledge Points 控件状态利器:VisualStateManager详解
    WPF Control Hints ComboBox : 如何去掉ComboBox的DropDownButton
    WPF Control Hints ContextMenu : 怎么通过MenuItem的Click事件取得ContextMenuItem绑定的类实例?
    WPF Knowledge Points Binding.StringFormat不起作用的原理和解决
    AJAX请求 $.ajaxSetup方法的使用
    Html标签输出到前台并导出到Excel
    XML序列化和反序列化
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114871.html
Copyright © 2020-2023  润新知