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

React Native+NET8后端上传时IFormFile始终为Null问题求助

React Native 0.76.1 + .NET 8 文件上传:IFormFile始终绑定为Null

开发React Native 0.76.1应用搭配.NET 8后端的图片上传功能时,遇到以下问题:

  • 后端接收IFormFile时始终为Null,但HttpContext.Request.Form中能看到文件相关数据
  • 请求已携带Content-Type: multipart/form-data请求头
  • API端点已添加[FromForm]特性

后端代码

JobController

public class JobController : BaseController
{
    private readonly JobService _jobService;

    public JobController(JobService jobService)
    {
        _jobService = jobService;
    }

    [HttpPost]
    public async Task<Guid> AddJobAsync([FromForm] AddJobInputModel model)
    {
        return await _jobService.AddJobAsync(model.AsAddJobModel());
    }
}

模型定义

public class AddJobInputModel
{
    [Required(ErrorMessage = "WizardIdRequired")]
    public Guid WizardId { get; set; }
    public decimal? CalculatedPrice { get; set; }
    [Required(ErrorMessage = "DetailsRequired")]
    public AddJobDetailInputModel[]? Details { get; set; }

    public AddJobModel AsAddJobModel()
    {
        return new AddJobModel
        {
            WizardId = WizardId,
            CalculatedPrice = CalculatedPrice,
            Details = Details!
                .Select(jd => jd.AsAddJobDetailModel())
                .ToArray()
        };
    }
}
public class AddJobDetailInputModel
{
    [Required(ErrorMessage = "FieldIdRequired")]
    public Guid? FieldId { get; set; }

    public string? Value { get; set; }
    
    public IFormFile? FileTest { get; set; }

    public List<IFormFile>? Files { get; set; }

    public AddJobDetailModel AsAddJobDetailModel()
    {
        return new AddJobDetailModel
        {
            FieldId = FieldId!.Value,
            Value = Value,
            File = FileTest
        };
    }
}

问题细节

其他字段(如wizardId、details[n].fieldId、details[n].value等)均能正常绑定,仅IFormFile无法完成绑定。

前端FormData序列化内容

{
    "_parts":[
        [
            "wizardId",
            "ab629ade-0a9c-4f2b-b06c-e23f807d524d"
        ],
        [
            "details[0].fieldId",
            "c1885911-f2fa-42be-9c2c-4a4cc728e9dd"
        ],
        [
            "details[0].value",
            "PostalCode"
        ],
        [
            "details[1].fieldId",
            "56744dd4-a041-4fb5-a92f-15f1114cc804"
        ],
        [
            "details[1].value",
            "123 m2"
        ],
        [
            "details[2].fieldId",
            "4db89fdd-ab44-4187-8dfb-fb080448df47"
        ],
        [
            "details[2].value",
            "6535178c-cdb5-4723-a044-59feca2a5658"
        ],
        [
            "details[3].fieldId",
            "dc8665b1-98c4-481c-ab8c-9a5e04a4996c"
        ],
        [
            "details[3].value",
            "c18458c0-d7f8-4103-8dfc-c039770ce061"
        ],
        [
            "details[4].fieldId",
            "e6b0da98-1424-45b9-bcd9-b0e65d54fa3d"
        ],
        [
            "details[4].value",
            "9fca0a9c-d310-484c-a469-68d2c234c82e"
        ],
        [
            "details[5].fieldId",
            "9f14cf43-bda4-40e6-b356-5f3d6232a267"
        ],
        [
            "details[5].value",
            "1d690725-20e4-4853-9a28-a6cbb76f1102"
        ],
        [
            "details[6].fieldId",
            "81453abf-af63-4c63-b71e-00ce4a161dc6"
        ],
        [
            "details[6].value",
            "Qwer"
        ],
        [
            "details[7].fieldId",
            "6d5905a7-869e-4a9a-b5f1-aa04b6f549ff"
        ],
        [
            "details[7].fileTest.width",
            "800"
        ],
        [
            "details[7].fileTest.fileName",
            "35616D7D-7E64-4C02-8D93-591A380FC699.jpg"
        ],
        [
            "details[7].fileTest.height",
            "533"
        ],
        [
            "details[7].fileTest.type",
            "image/jpg"
        ],
        [
            "details[7].fileTest.uri",
            "file:///Users/bok/Library/Developer/CoreSimulator/Devices/655A9DE8-190D-4CEF-B14E-DA73E42E33FA/data/Containers/Data/Application/7CFEAEE4-1099-4A84-B801-0FB9EA34D641/tmp/35616D7D-7E64-4C02-8D93-591A380FC699.jpg"
        ],
        [
            "details[7].fileTest.fileSize",
            "132883"
        ]
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:24:55