C# Umeditor 编辑器上传本地视频、本地文件

Umeditor
最近在做一个网站,涉及到网站文章的编辑。Umeditor是一个很好的选择,但是看了一下Umeditor,发现不能上传本地视频和本地文件,而项目又要得比较急,所以以我觉得最快的方式修改了Umeditor.js。

效果展示

在这里插入图片描述
在这里插入图片描述

温馨提示:这个地方不要上传大视频

1、下载Umeditor相关文件

Umeditor下载
运行index.html。可以看见这时候不能上传本地视频
在这里插入图片描述

2、上传本地Video。

1、打开video.js。在这个地方后面添加以下代码
在这里插入图片描述

 '<table style="margin-bottom: 10px">' +
            '<tr><td>'+
            '<span style="font-weight: bold;margin-left: 6px;"><%=lang_video_upload%></span>' +
            '<input id="uploadVideo" style="margin-left: 5px;" type="file" hidefocus name="upVideo" accept="video/MP3,video/MP4,video/WEBM,video/MPEG,video/AVI,video/WMV,video/OGG,video/EVA,video/MOV"/>' +
            '</td></tr>' +
            '</table>' +

2、同时在video函数内添加以下代码
在这里插入图片描述
在这里插入图片描述

 videoOnChange() {
            var me = this;
            var objUrl = me.getObjectURL($('#uploadVideo')[0].files[0]); //获取video的路径
            if (objUrl) {
                me.upload();
            }
        },
        upload: function () {
            document.getElementById("videoMask").style.display = "block";

            var me = this;
            var href = me.getRootPath() + "/ForegroundArticle/uploadAllFile?Path=\\Upload\\ArticleFiles\\Video";//后台Controller上传文件的地址

            var videoVal = $('#uploadVideo')[0].files[0];
            var file = new FormData();
            file.append('file', videoVal);
            $.ajax({
                url: href,
                type: "post",
                data: file,
                cache: false,
                contentType: false,
                processData: false,
                success: function (data) {
                    document.getElementById("videoMask").style.display = "none";
                    var res = JSON.parse(data);
                    $("#eduiVideoUrl").val(res.data.src);
                    me.createPreviewVideo(res.data.src);
                }
            });
        },
        getRootPath: function () {
            var curWwwPath = window.document.location.href;
            var pathName = window.document.location.pathname;
            var pos = curWwwPath.indexOf(pathName);
            //获取主机地址,
            var localhostPaht = curWwwPath.substring(0, pos); 
            return localhostPaht;
        },
        getObjectURL(file) {
            var url = null;
            if (window.createObjectURL != undefined) { // basic
                url = window.createObjectURL(file);
            } else if (window.URL != undefined) { // mozilla(firefox)
                url = window.URL.createObjectURL(file);
            } else if (window.webkitURL != undefined) { // webkit or chrome
                url = window.webkitURL.createObjectURL(file);
            }
            return url;
        },
        getObjectType(file) {
            var type = "";
            if (file != null) {
                var typeSplit = file.type.split("/");
                if (typeSplit.length == 2) {
                    type = typeSplit[1].toLowerCase();
                }
            }
            return type;
        }

此处的getObjectType()和getObjectURL()是同样的方法,可以放在一个地方共用。我没有放一起而已。
3、后台Controller代码

/// <summary>
        /// 上传所有文件
        /// </summary>
        /// <param name="Path"></param>
        /// <returns></returns>
        public string uploadAllFile(string Path = "UpLoad\\")
        {
            Path = Path + "\\" + DateTime.Now.ToString("yyyy-MM-dd");//根据日期分类

            LayuiFileResult res = new LayuiFileResult();
            try
            {
                HttpPostedFileBase fileData = Request.Files[0];
                if (fileData != null && fileData.ContentLength > 0)
                {
                    string fileSavePath = Server.MapPath("~") + Path;
                    int size = fileData.ContentLength;
                    //获取文件的扩展名
                    string extName = System.IO.Path.GetExtension(fileData.FileName);
                    string universalUploadExts = ConfigurationManager.AppSettings["UniversalUpLoadExtension"].ToString();
                    var universalUploadList = universalUploadExts.Split(',').ToList();
                    string zipUpLoadExts = ConfigurationManager.AppSettings["ZipUpLoadExtension"].ToString();
                    var zipUpLoadList = zipUpLoadExts.Split(',').ToList();
                    string videoUpLoadExts = ConfigurationManager.AppSettings["VideoUpLoadExtension"].ToString();
                    var videoUpLoadList = videoUpLoadExts.Split(',').ToList();
                    string fileUpLoadExts = ConfigurationManager.AppSettings["FileUpLoadExtension"].ToString();
                    var fileUpLoadList = fileUpLoadExts.Split(',').ToList();
                    universalUploadList.AddRange(zipUpLoadList);
                    universalUploadList.AddRange(videoUpLoadList);
                    universalUploadList.AddRange(fileUpLoadList);
                    universalUploadList.ForEach(i => i.ToLower());
                    if (!universalUploadList.Contains(extName.ToLower()))
                    {
                        res.code = -1;
                        res.msg = "上传失败,不支持该格式文件!";
                    }
                    else
                    {
                        //得到一个新文件的名称
                        string newName = Guid.NewGuid().ToString() + extName;
                        //如果文件目录不存在 创建目录
                        if (!System.IO.Directory.Exists(fileSavePath))
                        {
                            System.IO.Directory.CreateDirectory(fileSavePath);
                        }
                        //服务器保存文件
                        string path = System.IO.Path.Combine(fileSavePath, newName);
                        fileData.SaveAs(path);
                        List<string> FilsDicNames = Path.Split('\\').Where(i => !string.IsNullOrEmpty(i)).ToList();
                        foreach (var item in FilsDicNames)
                        {
                            res.data.src = res.data.src + ("/" + item);
                        }
                        res.data.src = res.data.src + "/" + newName;
                        res.data.FileName = fileData.FileName;
                    }
                }
            }
            catch (Exception ex)
            {
                res.code = -1;
                res.msg = ex.Message;
                Logger.Write(typeof(DefaultController), "DefaultController:uploadAllFile" + ex.Message);
            }
            return JsonConvert.SerializeObject(res);
        }

4、LayuiFileResult:上传文件的返回值

//上传文件的返回值
    public class LayuiFileResult
    {
        public int code { get; set; } = 1;
        public string msg { get; set; } = "成功";
        public FileInfo data { get; set; } = new FileInfo();
    }

到此,可以上传本地视频。
解决百度umeditor 无法插入.MP4 .avi 视频格式的问题

3、上传本地附件

1、打开zh-cn.js。添加以下代码
在这里插入图片描述
2、打开Umeditor.js,添加以下代码:
在这里插入图片描述
在这里插入图片描述
在createUI中添加以下代码:
在这里插入图片描述


                //附件上传隐藏框
                var upID = "#uploadFile_" + id.replace("#", "");
                if ($(upID).length == 0) {
                    var $upFile = $('<input id=' + (upID.replace("#", "")) + ' style="display:none" type="file"/>');
                    $upFile.insertBefore($container);

                    $(upID).on("change", function () {
                        var objUrl = getObjectURL($(upID)[0].files[0]);
                        if (objUrl) {
                            uploadFile(editor);
                        }
                    });
                }

在这里插入图片描述


    //文件上传相关---开始
    UM.registerUI('upFile', function (name) {
        var me = this;
        var upID = "#uploadFile_" + me.$body.selector.replace("#","");
        var $btn = $.eduibutton({
            icon: name,
            click: function () {
                setTimeout(function () {
                    $(upID).click();
                }, 500);
            },
            title: '附件上传'
        });
        this.addListener('selectionchange', function () {
            //切换为不可编辑时,把自己变灰
            var state = this.queryCommandState(name);
            $btn.edui().disabled(state == -1).active(state == 1)
        });
        return $btn;
    });
    function uploadFile(me) {
        var upID = "#uploadFile_" + me.id.replace("#", "");
        var href = getRootPath() + "/ForegroundArticle/uploadAllFile?Path=\\Upload\\ArticleFiles\\Files";
        var fileVal = $(upID)[0].files[0];
        var file = new FormData();
        file.append('file', fileVal);
        $.ajax({
            url: href,
            type: "post",
            data: file,
            cache: false,
            contentType: false,
            processData: false,
            success: function (data) {
                var res = JSON.parse(data);
                var innerHtml = "<a href=\"" + res.data.src + "\" target=\"_self\" >" + res.data.FileName + "</a>";
                UM.getEditor(me.id).execCommand('inserthtml', innerHtml);
            }
        });
    }
    function getObjectURL(file) {
        var url = null;
        if (window.createObjectURL != undefined) { // basic
            url = window.createObjectURL(file);
        } else if (window.URL != undefined) { // mozilla(firefox)
            url = window.URL.createObjectURL(file);
        } else if (window.webkitURL != undefined) { // webkit or chrome
            url = window.webkitURL.createObjectURL(file);
        }
        return url;
    }
    function getRootPath() {
        var curWwwPath = window.document.location.href;
        var pathName = window.document.location.pathname;
        var pos = curWwwPath.indexOf(pathName);
        //获取主机地址,
        var localhostPaht = curWwwPath.substring(0, pos);
        return localhostPaht;
    }
    //文件上传相关--结束

到此,便可以上传附件了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值