本文实例为大家分享了CKEditor与dotnetcore实现图片上传的具体代码,供大家参考,具体内容如下
CKEditor的使用
1.引入js库
1
|
< script src = "https://cdn.ckeditor.com/4.6.1/standard-all/ckeditor.js" ></ script > |
2.定义一个textarea标签
1
2
|
<textarea id = "editor" > < /textarea > |
3.用CkEditor替换textarea即可使用基本功能
1
|
CKEDITOR.replace( 'editor' ); |
4.配置CkEditor
添加图片上传,代码插入工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
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.后台接收图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/// <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脚本的问题
1
|
Response.ContentType = "text/html;charset=UTF-8" ; |
配置完成即可使用图片上传功能
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/lentoo/p/7583422.html