首页 > 编程 > .NET > 正文

CKEditor与dotnetcore实现图片上传功能

2024-07-10 12:54:26
字体:
来源:转载
供稿:网友

Ckeditor的工作方式类似于网页中的文本区域,它可以提供简单易写的用户界面,下面就跟着错新技术频道小编的步伐来了解CKEditor与dotnetcore实现图片上传功能吧!

CKEditor的使用

1.引入js库

<script src="https://cdn.ckeditor.com/4.6.1/standard-all/ckeditor.js"></script> 

2.定义一个textarea标签

<textarea id="editor"> </textarea> 

3.用CkEditor替换textarea即可使用基本功能

CKEDITOR.replace('editor'); 

4.配置CkEditor

添加图片上传,代码插入工具

CKEDITOR.replace('editor-box', {   //GitHub地址:https://github.com/ckeditor      toolbar: [    { name: 'document', items: ['Source'] },    { name: 'basicstyles', items: ['Bold', 'Italic'] },    { name: 'paragraph', items: ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote'] },    { name: 'links', items: ['Link', 'Unlink'] },    { name: 'insert', items: ['Image','CodeSnippet'] },    { name: 'styles', items: ['Format', 'Styles'] }   ],   filebrowserImageUploadUrl: '/Blogs/UploadImageUrl', //配置图片上传后台Url      customConfig: '',      extraPlugins: 'codesnippet,image2,uploadimage',      removePlugins: 'image',      //mathJaxLib: 'https://cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-AMS_HTML',     codeSnippet_theme: 'ir_black',   height: 450,      contentsCss: ['https://cdn.ckeditor.com/4.6.1/standard-all/contents.css'],      format_tags: 'p;h1;h2;h3;pre',      removeDialogTabs: 'image:advanced;link:advanced;link:target',     stylesSet: [    /* Inline Styles */    { name: 'Marker', element: 'span', attributes: { 'class': 'marker' } },    { name: 'Cited Work', element: 'cite' },    { name: 'Inline Quotation', element: 'q' },    /* Object Styles */    {     name: 'Special Container',     element: 'div',     styles: {      padding: '5px 10px',      background: '#eee',      border: '1px solid #ccc'     }    },    {     name: 'Compact table',     element: 'table',     attributes: {      cellpadding: '5',      cellspacing: '0',      border: '1',      bordercolor: '#ccc'     },     styles: {      'border-collapse': 'collapse'     }    },    { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },    { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } },    /* Widget Styles */    { name: 'Illustration', type: 'widget', widget: 'image', attributes: { 'class': 'image-illustration' } },    { name: 'Featured snippet', type: 'widget', widget: 'codeSnippet', attributes: { 'class': 'code-featured' } },    { name: 'Featured formula', type: 'widget', widget: 'mathjax', attributes: { 'class': 'math-featured' } }   ]  });

5.后台接收图片

 

/// <summary>  /// 图片上传  /// </summary>  /// <param name="env"></param>  /// <returns></returns>  public async Task<IActionResult> UploadImageUrl([FromServices]IHostingEnvironment env)  {   // CKEditor提交的很重要的一个参数    string callback = Request.Query["CKEditorFuncNum"];   var form = Request.Form;   var img = form.Files[0]; //获取图片   string fileName = img.FileName;   var openReadStream = img.OpenReadStream();   byte[] buff = new byte[openReadStream.Length];   await openReadStream.ReadAsync(buff, 0, buff.Length);   string filenameGuid = Guid.NewGuid().ToString();   var bowerPath = PathUtils.GetSavePath(filenameGuid, true) + ".jpg";//获取到图片保存的路径,这边根据自己的实现   var savePath = Path.Combine(env.WebRootPath, bowerPath);   using (FileStream fs = new FileStream(savePath, FileMode.Create))   {    await fs.WriteAsync(buff, 0, buff.Length);    //服务器返回JavaScript脚本    string result = $"<script type=/"text/javascript/">window.parent.CKEDITOR.tools.callFunction(/"{callback}/", /"{"/"+bowerPath}/", /"/");</script>";    Response.ContentType = "text/html;charset=UTF-8";    return Content(result);   }  } 

6.注意

服务器返回需要加上这个,否则会遇到前端页面不执行返回的JavaScript脚本的问题

Response.ContentType = "text/html;charset=UTF-8";

配置完成即可使用图片上传功能

上文是错新技术频道小编为大家带来的CKEditor与dotnetcore实现图片上传功能,大家可以详细预览一下,感兴趣的朋友可以收藏js.VeVb.com。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表