asp.net core 引用ckeditor编辑器

浪淘沙1年前后端209

网页

<script src="~/ckeditor/ckeditor.js"></script>
<script src="~/ckeditor/config.js"></script>

<textarea id="editor"></textarea>
<table class="tblno">

    <tr>
        <td>
            <font color="#999999">安全插入任意文件:</font>
        </td>
        <td>
          
            <iframe id="Iframe1" src="/sysadmins/upload/upload_editor?savefold=/UpLoadFiels/editor/&txtname=editor"
                    frameborder="0" scrolling="no" height="25"></iframe>
        </td>
        <td>
            <font color="#999999">按Ctrl键上传多个文件</font>
        </td>

    </tr>
</table>
<style>
    #editor img {
        max-width: 600px !important;
    }
</style>
<script>
    CKEDITOR.replace('editor', {
       
        filebrowserImageUploadUrl: '/api/UploadPic/UploadImage', // 图片上传
        // filebrowserBrowseUrl: '/api/UploadPic/UploadImage',  // 浏览文件
        filebrowserUploadUrl: '/api/UploadPic/UploadFile',  // 文件上传
        linkUploadUrl: '/api/UploadPic/UploadFile',  // 处理链接上传的 API
        extraPlugins: 'uploadimage', 
        height: "350",    
        imageUploadUrl: '/api/UploadPic/UploadImage',

    });
</script>

文件上传接口

using Masuit.Tools;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using static System.Runtime.InteropServices.JavaScript.JSType;

namespace xxtsoft.Application.Manage
{
    [ApiDescriptionSettings("05编辑器文件上传")]
    [Route("api/[controller]")]
    [ApiController]
    //登录判断
    [Authorize]
    public class UploadPic : ControllerBase
    {
        private readonly SqlSugar.ISqlSugarClient _db;

        public UploadPic(ISqlSugarClient db)
        {
            this._db = db;
        }


        [HttpPost("UploadImage")]
        [NonUnify]
        public async Task<object> UploadImage(IFormFile upload)
        {
           
            if (upload == null || upload.Length == 0)              
                return "{\"uploaded\": 0,\"error\": {\"message\": \"无法保存文件\"}}";

            var upfilename = "";//上传文件名     


            #region 检测图片格式
            var validMimeTypes = new[] { "image/jpeg", "image/png", "image/gif" };
            if (!validMimeTypes.Contains(upload.ContentType.ToLowerInvariant()))
            {
                return "{\"uploaded\": 0,\"error\": {\"message\": \"请上传图片格式\"}}";
            }
            #endregion

            #region 上传文件及路径
            //上传路径
            var filepath = "/upLoadfiels/";
            filepath += DateTime.Now.ToString("yyyy-MM") + "/";

            #endregion


            #region 保存文件


            var ext = Path.GetExtension(upload.FileName);




            //检测文件是否合法                  

            var filename = RandomHelper.GetGuid() + ext;//文件名

            var thispath = Path.Combine(App.WebHostEnvironment.WebRootPath + filepath, filename); //当前上传文件应存放的位置item.FileName

            upfilename += filepath + filename; //上传后的文件路径名                  

            //FileHelper.FileAdd("1.txt", upfilename + "\r\n");

            //目录不存在,创建目录
            if (!Directory.Exists(App.WebHostEnvironment.WebRootPath + filepath))
            {

                Directory.CreateDirectory(App.WebHostEnvironment.WebRootPath + filepath);
            }

            //上传文件
            using (var stream = new FileStream(thispath, FileMode.Create))      //创建特定名称的文件流
            {
                try
                {
                    await upload.CopyToAsync(stream);//上传文件

                    //上传日志

                }
                catch (Exception ex)        //上传异常处理
                {
                    //throw new Exception(ex.ToString());
                    return "{\"uploaded\": 0,\"error\": {\"message\": \"图片无法保存\"}}";
                }
            }
            #endregion

            #region 日志文件

            var originalfilename = upload.FileName;
            var createname = filepath + filename;
            var type = Path.GetExtension(upload.FileName);
            var username = App.HttpContext.User.Identity.Name;
            var filesize = upload.Length;

            await _db.InsertableByDynamic(
            new
            {
                originalfilename = originalfilename,
                createname = createname,
                type = type,
                filesize = filesize,
                username = username

            })
            .AS("pub_uploadfile")
            .ExecuteCommandAsync();
            #endregion

          

            return "{\"uploaded\":1,\"url\":\"" + upfilename + "\",\"width\":\"auto\",\"height\":\"auto\"}";
        }

        [HttpPost("UploadFile")]
        [NonUnify]
        public async Task<object> UploadFile(IFormFile upload)
        {
            if (upload == null || upload.Length == 0)
                return "{\"uploaded\": 0,\"error\": {\"message\": \"无法保存文件\"}}";

            var upfilename = "";//上传文件名     

            #region 上传文件及路径
            //上传路径
            var filepath = "/upLoadfiels/";
            filepath += DateTime.Now.ToString("yyyy-MM") + "/";

            #endregion

            #region 保存文件


            var ext = Path.GetExtension(upload.FileName);

            //检测文件是否合法                  

            var filename = RandomHelper.GetGuid() + ext;//文件名

            var thispath = Path.Combine(App.WebHostEnvironment.WebRootPath + filepath, filename); //当前上传文件应存放的位置item.FileName

            upfilename += filepath + filename; //上传后的文件路径名                  

            //FileHelper.FileAdd("1.txt", upfilename + "\r\n");

            //目录不存在,创建目录
            if (!Directory.Exists(App.WebHostEnvironment.WebRootPath + filepath))
            {

                Directory.CreateDirectory(App.WebHostEnvironment.WebRootPath + filepath);
            }

            //上传文件
            using (var stream = new FileStream(thispath, FileMode.Create))      //创建特定名称的文件流
            {
                try
                {
                    await upload.CopyToAsync(stream);//上传文件

                    //上传日志

                }
                catch (Exception ex)        //上传异常处理
                {
                    //throw new Exception(ex.ToString());
                    return "{\"uploaded\": 0,\"error\": {\"message\": \"图片无法保存\"}}";
                }
            }
            #endregion

            #region 日志文件

            var originalfilename = upload.FileName;
            var createname = filepath + filename;
            var type = Path.GetExtension(upload.FileName);
            var username = App.HttpContext.User.Identity.Name;
            var filesize = upload.Length;

            await _db.InsertableByDynamic(
            new
            {
                originalfilename = originalfilename,
                createname = createname,
                type = type,
                filesize = filesize,
                username = username

            })
            .AS("pub_uploadfile")
            .ExecuteCommandAsync();
            #endregion

          
            return "{\"uploaded\":1,\"url\":\"" + upfilename + "\",\"fileName\":\"2222222222\"}";
        }
    }
}


插入文件html

@page
@model xxtsoft.Web.Entry.Pages.sysadmins.upload.upload_editorModel
@{
    Layout = "_LayoutAdmin";
}
<style>
    * {
        margin: 0;
        padding: 0;

        font-size: 12px;
    }

    html{
        background: unset;
    }

</style>
<form method="post" enctype="multipart/form-data">
    <div class="layui-form">
        <div class="layui-form-item">
            <div class="layui-input-group">
                <input type="file" name="files" multiple placeholder="请选择">
                <input type="hidden" name="savefold" value="@Model.savefold" />
              
                <input type="hidden" name="txtname" value="@Model.txtname" />
                <div class="layui-input-suffix">
                    <input class="layui-btn layui-btn-xs" type="submit" value="上传" />
                </div>
            </div>
        </div>

    </div>
</form>
@Html.Raw(Model.msgJs)

插入文件C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Furion;
using xxtsoft.Common;
using System.Xml.Linq;

namespace xxtsoft.Web.Entry.Pages.sysadmins.upload
{
    //登录判断
    [Authorize]
    public class upload_editorModel : PageModel
    {
        /// <summary>
        /// 弹出js上传说明
        /// </summary>
        public string msgJs { get; set; }
        /// <summary>
        /// 保存的文件夹
        /// </summary>
        public string savefold { get; set; }

        /// <summary>
        /// 父input值
        /// </summary>
        public string txtname { get; set; }

        private readonly SqlSugar.ISqlSugarClient _db;
        public upload_editorModel(SqlSugar.ISqlSugarClient db)
        {
            this._db = db;
            //_db.ChangeDatabase("1");
        }
        public void OnGet()
        {
            savefold = FunHelper.FilerForm(Request.Query["savefold"]);//过滤非法字符,存放路径文件夹

            txtname = FunHelper.FilerForm(Request.Query["txtname"]);//上传input id


        }
        //上传文件是 post 方式,这里加不加都可以
        public async Task<IActionResult> OnPostAsync(List<IFormFile> files)
        {
            savefold = FunHelper.FilerForm(Request.Form["savefold"]);
            txtname = FunHelper.FilerForm(Request.Form["txtname"]);

            var upfilename = "";//上传文件名     

            #region 上传文件及路径

            //上传路径
            var filepath = "";
            if (!string.IsNullOrEmpty(savefold))
            {
                filepath += savefold;
            }
            else
            {
                filepath += "/upLoadfiels/";
            }

            filepath += DateTime.Now.ToString("yyyy-MM") + "/";

            #endregion
            string innerhtml = "";
            foreach (var item in files)     //上传选定的文件列表
            {
                if (item.Length > 0)        //文件大小 0 才上传
                {
                    #region 保存文件


                    var ext = Path.GetExtension(item.FileName);

                    //检测文件是否合法

                    //bool hf = UploadHelper.CheckFileExtends(ext.Replace(".", ""), UploadHelper.FileTpe.SoftType).Result;
                    ////FileHelper.FileAdd(FileHelper.absoluteWebPath("1.txt"), hf + "\r\n");
                    //if (hf)
                    //{
                    //    MessageHelper.ShowLocation("文件不合法");
                    //    return Page();
                    //}



                    var filename = RandomHelper.GetGuid() + ext;//文件名

                    var thispath = Path.Combine(App.WebHostEnvironment.WebRootPath + filepath, filename); //当前上传文件应存放的位置item.FileName



                    upfilename += filepath + filename + "|"; //上传后的文件路径名                  

                    //目录不存在,创建目录
                    if (!Directory.Exists(App.WebHostEnvironment.WebRootPath + filepath))
                    {

                        Directory.CreateDirectory(App.WebHostEnvironment.WebRootPath + filepath);
                    }

                    //上传文件
                    using (var stream = new FileStream(thispath, FileMode.Create))      //创建特定名称的文件流
                    {
                        try
                        {
                            await item.CopyToAsync(stream);//上传文件

                            //上传日志

                        }
                        catch (Exception ex)        //上传异常处理
                        {
                            throw new Exception(ex.ToString());
                        }
                    }
                    #endregion

                    #region 日志文件

                    var originalfilename = item.FileName;
                    var createname = filepath + filename;
                    var type = Path.GetExtension(item.FileName);
                    var username = User.Identity.Name;
                    var filesize = item.Length;

                    await _db.InsertableByDynamic(
                    new
                    {
                        originalfilename = originalfilename,
                        createname = createname,
                        type = type,
                        filesize = filesize,
                        username = username

                    })
                    .AS("pub_uploadfile")
                    .ExecuteCommandAsync();
                    #endregion

                    innerhtml += uploadfile(createname, type.Replace(".", ""), originalfilename);
                }

            }
            upfilename = FunHelper.RepStrRight(upfilename, "|", "");
            //弹出js
            msgJs = "<script>parent.CKEDITOR.instances." + txtname + ".insertHtml('" + innerhtml + "');</script>";
            return Page();
        }

        #region 获取文件上传格式


        private string uploadfile(string pic, string orginfiletype, string orginfilename)
        {
            string Rn = "";
            switch (orginfiletype.ToLower())
            {
                case "jpg":
                case "gif":
                case "bmp":
                case "png":
                    Rn = "<center><a href=" + pic.Replace("s_", "") + " target=_blank><img src=" + pic + " border=0   /></a></center>";
                    break;

                case "swf":
                case "flv":
                    Rn = "<center><object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0\" height=\"800\" width=\"900\"><param name=\"quality\" value=\"high\" /><param name=\"movie\" value=\"" + pic + "\" /><embed height=\"800\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" quality=\"high\" src=\"" + pic + "\" type=\"application/x-shockwave-flash\" width=\"900\"></embed></object></center>";

                    //  Rn += "<embed height=\"100px\" width=\"500px\" name=\"googlePlayer\" src=\"/icon/google-audio-player.swf?audioUrl=" + pic + "&autoPlay=true\" type=\"application/x-shockwave-flash\"/>";
                    break;
                case "rm":
                case "ram":
                case "mp3":


                    Rn += "<embed height=\"100px\" width=\"500px\" name=\"googlePlayer\" src=\"/icon/google-audio-player.swf?audioUrl=" + pic + "&autoPlay=true\" type=\"application/x-shockwave-flash\"/>";
                    break;
                case "mp4":
                    Rn = "<center><object id=player classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 name=player width=800 height=600>";
                    Rn += "		<param name=movie value=/templates/default/flash/player.swf?screencolor=#690601 />";
                    Rn += "		<param name=allowfullscreen value=true />";
                    Rn += "		<param name=allowscriptaccess value=always />";
                    Rn += "		<param name=flashvars value=file=" + pic + "&image=/UpLoadFiels/flv.jpg />";
                    Rn += "		<embed type=application/x-shockwave-flash id=player2 name=player2 src=/templates/default/flash/player.swf?screencolor=#690601 width=800 height=600 allowscriptaccess=always allowfullscreen=true flashvars=file=" + pic + "&image=/UpLoadFiels/flv.jpg />";
                    Rn += "	</object>";
                    Rn += "</center>";

                    break;
                case "wma":
                case "wmv":
                case "asf":
                case "avi":
                case "mpeg":
                    Rn += "<embed height=\"100px\" width=\"500px\" name=\"googlePlayer\" src=\"/icon/google-audio-player.swf?audioUrl=" + pic + "&autoPlay=true\" type=\"application/x-shockwave-flash\"/>";
                    break;

                //case "xls":
                //case "xlsx":
                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";
                //    break;
                //case "doc":
                //case "docx":
                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";
                //    break;

                //case "ppt":
                //case "pptx":
                //case "ppsx":
                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";
                //    break;

                //case "rar":
                //case "zip":

                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";
                //    break;
                //case "pdf":
                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";

                //    break;
                //case "mdf":
                //case "mdb":
                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";

                //    break;
                //case "txt":

                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";
                //    break;
                //case "chm":

                //    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";
                //    break;
                default:
                    Rn = "<a href=\"" + pic + "\">" + orginfilename + "</a>";
                    break;

            }


            return Rn;

        }

        #endregion
    }


}


相关文章

asp.net core webapi 调用furion 的webapi json接口

/// <summary> /// 根据学校读取支付科次 /// </summary> /// <returns>&l...

asp.net core url编码

 HttpUtility.UrlEncode("https://fdy.eduw.cn/zf/index")...

asp.net core SqlSugar 多库切换

  private readonly SqlSugar.ISqlSugarClient _db;     ...

asp.net core razor 输出html

@Html.Raw(Model.HtmlContent)...

asp.net core rzaor page 中的ViewComponent 视图用法

asp.net core rzaor page 中的ViewComponent 视图用法

1、/Pages/Components 新建:MyViewComponent.csusing Microsoft.AspNetCore.Mvc; namespace xxts...

asp.net core 检测上传文件为图片格式

  #region 检测图片格式   var validMimeTypes = new[] { &...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。