ASP.net core 使用UEditor.Core 实现 ueditor 上传功能

首先通过nuget 引用UEditor.Core,作者github:https://github.com/baiyunchen/UEditor.Core/

在Startup.cs中添加

services.AddUEditorService();   

引入ueditor并配置

从ueditor官网下载最新版本的压缩包,并放到项目的wwwroot下面的lib文件夹中,然后在你需要的使用UEditor的页面或全局引入ueditor.config.js和ueditor.all.min.js文件。

打开ueditor.config.js文件,将其中的serverUrl项改为UEditorController中Upload方法对应的地址(没有改路由的话应该是:UEditor/Upload)。

配置静态资源文件夹

            app.UseStaticFiles(new StaticFileOptions{FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "upload")),RequestPath = "/upload",OnPrepareResponse = ctx =>{ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=36000");}});

解决中文被html编码的问题

            //解决中文被html编码的问题services.Configure(options =>{options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.BasicLatin, UnicodeRanges.CjkUnifiedIdeographs);});

添加后端配置文件

将下载ueditor .net 中config.js 改名 为ueditor.json添加到项目根目录。

ueditor.json

/* 前后端通信相关的配置,注释只允许使用多行方式 */{/* 上传图片配置项 */"imageActionName": "uploadimage", /* 执行上传图片的action名称 */"imageFieldName": "upfile", /* 提交的图片表单名称 */"imageMaxSize": 2048000, /* 上传大小限制,单位B */"imageAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp" ], /* 上传图片格式显示 */"imageCompressEnable": true, /* 是否压缩图片,默认是true */"imageCompressBorder": 1600, /* 图片压缩最长边限制 */"imageInsertAlign": "none", /* 插入的图片浮动方式 */"imageUrlPrefix": "/", /* 图片访问路径前缀 */"imagePathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 *//* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 *//* {rand:6} 会替换成随机数,后面的数字是随机数的位数 *//* {time} 会替换成时间戳 *//* {yyyy} 会替换成四位年份 *//* {yy} 会替换成两位年份 *//* {mm} 会替换成两位月份 *//* {dd} 会替换成两位日期 *//* {hh} 会替换成两位小时 *//* {ii} 会替换成两位分钟 *//* {ss} 会替换成两位秒 *//* 非法字符 \ : * ? " < > | *//* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename *//* 涂鸦图片上传配置项 */"scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */"scrawlFieldName": "upfile", /* 提交的图片表单名称 */"scrawlPathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */"scrawlMaxSize": 2048000, /* 上传大小限制,单位B */"scrawlUrlPrefix": "/", /* 图片访问路径前缀 */"scrawlInsertAlign": "none",/* 截图工具上传 */"snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */"snapscreenPathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */"snapscreenUrlPrefix": "/", /* 图片访问路径前缀 */"snapscreenInsertAlign": "none", /* 插入的图片浮动方式 *//* 抓取远程图片配置 */"catcherLocalDomain": [ "127.0.0.1", "localhost", "img.baidu.com" ],"catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */"catcherFieldName": "source", /* 提交的图片列表表单名称 */"catcherPathFormat": "upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */"catcherUrlPrefix": "/", /* 图片访问路径前缀 */"catcherMaxSize": 2048000, /* 上传大小限制,单位B */"catcherAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp" ], /* 抓取图片格式显示 *//* 上传视频配置 */"videoActionName": "uploadvideo", /* 执行上传视频的action名称 */"videoFieldName": "upfile", /* 提交的视频表单名称 */"videoPathFormat": "upload/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */"videoUrlPrefix": "/", /* 视频访问路径前缀 */"videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */"videoAllowFiles": [".flv",".swf",".mkv",".avi",".rm",".rmvb",".mpeg",".mpg",".ogg",".ogv",".mov",".wmv",".mp4",".webm",".mp3",".wav",".mid"], /* 上传视频格式显示 *//* 上传文件配置 */"fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */"fileFieldName": "upfile", /* 提交的文件表单名称 */"filePathFormat": "upload/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */"fileUrlPrefix": "/", /* 文件访问路径前缀 */"fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */"fileAllowFiles": [".png",".jpg",".jpeg",".gif",".bmp",".flv",".swf",".mkv",".avi",".rm",".rmvb",".mpeg",".mpg",".ogg",".ogv",".mov",".wmv",".mp4",".webm",".mp3",".wav",".mid",".rar",".zip",".tar",".gz",".7z",".bz2",".cab",".iso",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".pdf",".txt",".md",".xml"], /* 上传文件格式显示 *//* 列出指定目录下的图片 */"imageManagerActionName": "listimage", /* 执行图片管理的action名称 */"imageManagerListPath": "upload/image", /* 指定要列出图片的目录 */"imageManagerListSize": 20, /* 每次列出文件数量 */"imageManagerUrlPrefix": "/", /* 图片访问路径前缀 */"imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */"imageManagerAllowFiles": [ ".png", ".jpg", ".jpeg", ".gif", ".bmp" ], /* 列出的文件类型 *//* 列出指定目录下的文件 */"fileManagerActionName": "listfile", /* 执行文件管理的action名称 */"fileManagerListPath": "upload/file", /* 指定要列出文件的目录 */"fileManagerUrlPrefix": "/", /* 文件访问路径前缀 */"fileManagerListSize": 20, /* 每次列出文件数量 */"fileManagerAllowFiles": [".png",".jpg",".jpeg",".gif",".bmp",".flv",".swf",".mkv",".avi",".rm",".rmvb",".mpeg",".mpg",".ogg",".ogv",".mov",".wmv",".mp4",".webm",".mp3",".wav",".mid",".rar",".zip",".tar",".gz",".7z",".bz2",".cab",".iso",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".pdf",".txt",".md",".xml"] /* 列出的文件类型 */}

如果想上传到根目录特定文件夹,只需要修改

"upload/file" / "upload/image/"类似字段即可

开始使用UEditor

创建后端接口

例如:

public class UEditorController : Controller{private readonly UEditorService _ueditorService;public UEditorController(UEditorService ueditorService){this._ueditorService = ueditorService;}//如果是API,可以按MVC的方式特别指定一下API的URI[HttpGet, HttpPost]   public ContentResult Upload(){var response = _ueditorService.UploadAndGetResponse(HttpContext);return Content(response.Result, response.ContentType);}}

如果想指定区域如下

using UEditor.Core;namespace Website.MVC.Areas.Admin.Controllers{[Area("Admin")][Authorize][IgnoreAntiforgeryToken][Route("{area}/{controller}")]public class UploadController : Controller{private readonly UEditorService _uEditorService;public UploadController(UEditorService uEditorService){_uEditorService = uEditorService;}[Route("UEditor")][AllowAnonymous][HttpGet, HttpPost]public ContentResult UEditor(){var response = _uEditorService.UploadAndGetResponse(HttpContext);return Content(response.Result, response.ContentType);}}}

wwwroot/lib/ueditor-1.4.3.3/ueditor.config.js中需要设置controller

        // 服务器统一请求接口路径//, serverUrl: "/ueditor/upload", serverUrl: "/Admin/Upload/UEditor"

在需要的.cshtml中添加引用

         ***<!--form 表单ID name 仍然可以使用--><div class="layui-form-item"><script id="Content" name="Content" type="text/plain" style="width:1366px;height:500px;"></script></div>***<!-- 配置文件 --><script src="~/lib/ueditor-1.4.3.3/ueditor.config.js" asp-append-version="true"></script><!-- 编辑器源码文件 --><script src="~/lib/ueditor-1.4.3.3/ueditor.all.min.js" asp-append-version="true"></script><!--建议手动加载语言,避免在ie下有时因为加载语言失败导致编辑器加载失败--><!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文--><script type="text/javascript" charset="utf-8" src="~/lib/ueditor-1.4.3.3/lang/zh-cn/zh-cn.js">

然后在页面的最后添加如下JS代码:

<script type="text/javascript">var ue = UE.getEditor('container', {initialFrameHeight: 500});</script>

如果使用layui 如下:

//layer 弹窗索引var layerindex;var ueditContentIndex;layui.use(['layer', 'table', 'upload', 'laydate', 'form'], function () {var table = layui.table,layer = layui.layer,form = layui.form,laydate = layui.laydate,upload = layui.upload;var useUEditor = function () {//建立编辑器ueditContentIndex = UE.getEditor('ArticleContent', {initialFrameHeight: 500});****if (ueditContentIndex != null) {ueditContentIndex.destroy();}useUEditor();       //实例化编辑器,只能放在layer 弹窗后// editor准备好之后才可以使用ueditContentIndex.addListener("ready", function () {//赋值ueditContentIndex.setContent(""); //你想要的值 });}****ajax:$.ajax({type: 'post',url: "/Admin/Article/SubmitArticle",//请求的action路径data: {****ArticleContent: formdata.Content, //UEditor name 直接用layui formdata 省事*****},dataType: "json",success: function (data) {console.log(data);},error: function (data) {console.log(data);layer.msg('提交失败!', { icon: 2 });}});   });

 最后修复UEditor  会“吃掉” 'class', 'style' 的bug.

在 /wwwroot/lib/ueditor-1.4.3.3/ueditor.config.js 第366行

设置所有便签都加上['class', 'style'],(有xss风险慎用)

        // xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js,whitList: {a:      ['target', 'href', 'title', 'class', 'style'],abbr:   ['title', 'class', 'style'],address: ['class', 'style'],area:   ['shape', 'coords', 'href', 'alt'],article: ['class', 'style'],aside: ['class', 'style'],audio:  ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'],b:      ['class', 'style'],bdi:    ['dir'],bdo:    ['dir'],big: ['class', 'style'],blockquote: ['cite', 'class', 'style'],br: ['class', 'style'],caption: ['class', 'style'],center: ['class', 'style'],cite: ['class', 'style'],code:   ['class', 'style'],col:    ['align', 'valign', 'span', 'width', 'class', 'style'],colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'],dd:     ['class', 'style'],del:    ['datetime'],details: ['open'],div:    ['class', 'style'],dl:     ['class', 'style'],dt:     ['class', 'style'],em:     ['class', 'style'],font:   ['color', 'size', 'face'],footer: ['class', 'style'],h1:     ['class', 'style'],h2:     ['class', 'style'],h3:     ['class', 'style'],h4:     ['class', 'style'],h5:     ['class', 'style'],h6:     ['class', 'style'],header: ['class', 'style'],hr: ['class', 'style'],i:      ['class', 'style'],img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex','style'],ins:    ['datetime'],li:     ['class', 'style'],mark: ['class', 'style'],nav: ['class', 'style'],ol:     ['class', 'style'],p:      ['class', 'style'],pre:    ['class', 'style'],s:      ['class', 'style'],section: ['class', 'style'],small: ['class', 'style'],span:   ['class', 'style'],sub:    ['class', 'style'],sup:    ['class', 'style'],strong: ['class', 'style'],table:  ['width', 'border', 'align', 'valign', 'class', 'style'],tbody:  ['align', 'valign', 'class', 'style'],td:     ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],tfoot:  ['align', 'valign', 'class', 'style'],th:     ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],thead:  ['align', 'valign', 'class', 'style'],tr:     ['rowspan', 'align', 'valign', 'class', 'style'],tt: ['class', 'style'],u: ['class', 'style'],ul:     ['class', 'style'],video:  ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style']}};

UEditor.Core作者github地址: https://github.com/baiyunchen/UEditor.Core

pass:我会经常修改 不希望被转载!

转载于:https://www.cnblogs.com/WNpursue/p/ASPNetCore-use-UEditor-Core-share.html

ASP.net core 使用UEditor.Core 实现 ueditor 上传功能相关推荐

  1. ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...

  2. .NET Core Web APi大文件分片上传研究

    [导读]前两天发表利用FormData进行文件上传.NET和.NET Core Web APi FormData多文件上传,然后有人问要是大文件几个G上传怎么搞,常见的不就是分片再搞下断点续传,动动手 ...

  3. .NET和.NET Core Web APi FormData多文件上传

    [导读]最近因维护.NET和.NET Core项目用到文件上传功能,虽说也做过,但是没做过什么对比,借此将二者利用Ajax通过FormData上传文件做一个总结,通过视图提交表单太简单,这里不做阐述, ...

  4. 使用ueditor实现多图片上传案例

    UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点.开源基于BSD协议,所有源代码在协议允许范围内可自由修改和使用.百度UEditor的推出 ...

  5. ASP实例:6行代码实现无组件上传

    ASP实例:6行代码实现无组件上传 目前有很多无组件上传类,我大概看了一下,大多写的相当复杂,有的居然还只能传文本 最关键的是没有10行代码以下的 :) 我花了一个晚上时间研究了一下ADODB.Str ...

  6. Asp.net(C#)利用File Field多文件上传

    Asp.net(C#)利用File Field多文件上传 利用js添加隐藏File Field控件的方法实现多文件上传,除了一定要为form添加encType="multipart/form ...

  7. asp.net core集成CKEditor实现图片上传功能

    背景 本文为大家分享了asp.net core 如何集成CKEditor ,并实现图片上传功能的具体方法,供大家参考,具体内容如下. 准备工作 1.visual studio 2019 开发环境 2. ...

  8. 用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传...

    第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三 ...

  9. UEditor 富文本编辑器-后端实现文件上传功能

    一.背景 前端使用 UEditor 富文本编辑器,前后端分离情况下,需要后端提供一个接口实现文件上传功能 本文根据文章:vue+Ueditor集成 [前后端分离项目][图片.文件上传][富文本编辑] ...

最新文章

  1. 肠道菌群机制研究及国自然课题设计专题会议
  2. 脑电分析系列 | MNE-Python汇总
  3. java线程系列---类中的定时器Timer
  4. xp mysql字符集与乱码_mysql字符集(GBK、GB2312、UTF8)与中文乱码的原因及解决
  5. 合泰单片机 熔丝_合泰单片机HT66F018红外发射C程序及电路图
  6. jooq 生成数据库_jOOQ类型安全数据库查询教程
  7. java实现泛型检索_高级Java泛型:检索泛型类型参数
  8. C#出题库项目的总结(1)
  9. linux内存管理:kmap、vmap、ioremap
  10. ubuntu-常用命令汇总
  11. mac ox php.ini 位置,MAC Osx PHP安装指导
  12. java 导出EXcel数据
  13. 集成电路经典资料分享
  14. 测试raid性能软件,IO性能测试-关于RAID不可不知的那些事儿
  15. Go runtime发展历程图片
  16. 【已解决】机械革命s1-01触控手势失效解决方案
  17. win7/win10下KiWi Syslog服务器的安装与配置
  18. 【机试】2011-2020年复旦大学考研复试机试真题
  19. 数商云医药医疗行业B2B平台:如何赋能企业数字化转型,破局传统医药通路难题
  20. 基于FPGA的DDS设计

热门文章

  1. ceph-deploy install时,远端节点在执行apt-get update命令时失败
  2. andriod 开发记录apidemos 错误解决
  3. vim的巧用---对比操作
  4. Link State ID
  5. 如何修改Chrome默认字体
  6. python测试开发django-25.表单提交之post注册案例
  7. exception javax.crypto.BadPaddingException: Given final block not properly padded
  8. SpringBoot使用velocity模板引擎
  9. 怎样理解阻塞非阻塞与同步异步的区别?
  10. Swift - 获取、改变按钮的标题文本(UIButton点击切换title)