CKEditor与dotnetcore实现图片上传功能
发布时间 - 2026-01-11 03:26:10 点击率:次本文实例为大家分享了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
# 图片上传
# .Net Core自动化部署之利用docker版jenkins部署dotnetcore应用的方法
# DotNetCore深入了解之HttpClientFactory类详解
# 自己的
# 很重要
# 大家分享
# 则会
# 具体内容
# 大家多多
# latest
# MathJax
# org
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
PHP正则匹配日期和时间(时间戳转换)的实例代码
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel如何使用.env文件管理环境变量?(最佳实践)
昵图网官方站入口 昵图网素材图库官网入口
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
MySQL查询结果复制到新表的方法(更新、插入)
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
北京专业网站制作设计师招聘,北京白云观官方网站?
JS去除重复并统计数量的实现方法
浅谈javascript alert和confirm的美化
如何快速辨别茅台真假?关键步骤解析
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
简单实现jsp分页
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel如何实现API版本控制_Laravel版本化API设计方案
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
详解Oracle修改字段类型方法总结
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
什么是javascript作用域_全局和局部作用域有什么区别?
如何在云虚拟主机上快速搭建个人网站?
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
详解Android——蓝牙技术 带你实现终端间数据传输
JavaScript如何实现倒计时_时间函数如何精确控制
如何用PHP工具快速搭建高效网站?
WordPress 子目录安装中正确处理脚本路径的完整指南
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何用搬瓦工VPS快速搭建个人网站?
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
香港服务器租用费用高吗?如何避免常见误区?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何登录建站主机?访问步骤全解析
Internet Explorer官网直接进入 IE浏览器在线体验版网址
深圳网站制作培训,深圳哪些招聘网站比较好?
bing浏览器学术搜索入口_bing学术文献检索地址
如何在阿里云香港服务器快速搭建网站?
大连 网站制作,大连天途有线官网?

