You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MVC Core中Kendo Upload通过Ajax Post上传文件数据为空排查

解决Kendo Upload + Ajax Post上传时后端接收数据为空的问题

我仔细看了你的代码,问题出在上传数据的封装方式上——直接把文件和参数放在普通对象里传给Ajax的data属性,是无法被ASP.NET Core后端正确解析的。上传文件必须用FormData对象来包装数据,这样才能符合multipart/form-data的请求格式,后端才能读取到IFormFile和其他参数。

问题原因分析

你当前的Ajax请求中,直接把fileUpload: files[0].rawFile这类数据放在普通对象里,虽然设置了processData: false和contentType: false,但jQuery不会自动把这个对象转换成符合要求的表单数据格式,导致后端无法识别传入的文件和参数,所以接收的值都是空的。

修复方案

修改前端代码,使用FormData来封装文件和参数,具体步骤如下:

  1. 创建FormData实例,逐个添加文件和额外参数
  2. 保持processData: false和contentType: false的配置(这两个配置是必须的,防止jQuery破坏FormData的结构)

修改后的完整前端代码:

$(function () {
    $("#uploadForm").submit(function (e) {
        e.preventDefault();
        var upload = $("#fileUpload").data("kendoUpload"),
            files = upload.getFiles();
        
        // 先检查是否有选中文件
        if (files.length === 0) {
            alert("请选择要上传的文件");
            return;
        }
        
        // 初始化FormData对象
        const formData = new FormData();
        
        // 添加文件:键名必须和后端参数名(fileUpload)完全一致
        formData.append("fileUpload", files[0].rawFile);
        // 添加其他参数
        formData.append("RmclientAccid", "1");
        formData.append("AsAtDate", "testdate");
        
        $.ajax({
            type: 'POST',
            url: '/RmReportTasks/UploadFile/',
            processData: false, // 禁止jQuery处理FormData(避免转成字符串)
            contentType: false, // 让浏览器自动设置正确的Content-Type(包含boundary)
            data: formData,
            success: function (data) {
                console.log("上传成功:", data);
            },
            error: function (err) {
                console.log("上传失败:", err);
            }
        });
    });
});

额外说明

  • 如果需要上传多个文件,只需要循环files数组,逐个调用formData.append("fileUpload", file.rawFile)即可,后端的IEnumerable<IFormFile>会自动接收所有文件。
  • 后端代码不需要修改,只要参数名和FormData里的键名一致就能正常接收数据。

这样修改后,你的后端就能正确获取到上传的文件和参数了。

内容的提问来源于stack exchange,提问作者Suneel Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:07:02