为何CKEditor向ASP.NET Core5的UploadFile接口传递空图片文件?
排查CKEditor上传图片时控制器接收文件为null的问题
以下是几个常见的排查方向和解决方法:
1. 修正参数名称匹配问题
CKEditor 默认上传图片时,发送的表单字段名称是 upload,而你的控制器方法参数是 IFormFile File,名称不匹配导致无法绑定。把参数名改成upload即可:
[HttpPost] [AllowAnonymous] public IActionResult UploadFile(IFormFile upload) { return Json(_postService.UploadFile(upload)); }
如果想保留参数名File,可以给参数加上[FromForm(Name = "upload")]特性显式指定绑定的字段名:
public IActionResult UploadFile([FromForm(Name = "upload")] IFormFile File)
2. 确认请求路由正确性
检查filebrowserImageUploadUrl: '/Blog/UploadFile'是否和你的控制器路由匹配:
- 确保你的控制器类上标注了
[Route("[controller]")](即BlogController对应/Blog前缀) - 如果控制器有自定义路由模板,需要调整
filebrowserImageUploadUrl的路径,保证请求能正确路由到UploadFile方法
3. 验证请求内容类型与上传限制
- CKEditor上传图片时会发送
multipart/form-data类型的请求,ASP.NET Core默认支持这种类型的绑定,但如果你的项目中配置了全局的请求过滤,需要确保没有拦截这类请求 - 检查ASP.NET Core的上传大小限制,默认情况下单个文件最大为30MB,超出的话会返回413错误,而非接收null。如果需要调整,可以在
Program.cs(或Startup.cs)中配置:
builder.Services.Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = 104857600; // 设置为100MB });
4. 检查CKEditor配置完整性
确保你的CKEditor配置没有语法错误,比如你提供的代码中CKEDITOR.replace的配置对象末尾缺少闭合的)和;,修正后的配置应该是:
<script> CKEDITOR.replace('Description', { filebrowserImageBrowseUrl: 'Uploads', filebrowserImageUploadUrl: '/Blog/UploadFile' }); </script>
内容的提问来源于stack exchange,提问作者Sahar
相关产品推荐
相关产品推荐

