视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
CKEditor与dotnetcore实现图片上传功能
2020-11-27 22:35:25 责编:小OO
文档


本文实例为大家分享了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";

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

 

下载本文
显示全文
专题