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

.NET 5 API控制器处理带boundary的multipart/form-data请求提取JSON方案咨询

解决方案

.NET 5 原生内置了 multipart/form-data 格式的解析能力,无需手动切割字符串处理 boundary,可直接通过 Request.ReadFormAsync() 方法完成解析,步骤如下:

最简实现(无需自定义模型绑定)

直接在接口方法中调用原生表单读取接口,提取对应字段反序列化即可:

[HttpPost]
[Route("[action]")]
// 注意把返回值改为异步 Task 避免同步阻塞
public async Task<IActionResult> YYYYYYY()
{
    // 原生自动解析 boundary 拆分所有表单字段
    var formData = await Request.ReadFormAsync();
    // 提取name为ZZZZZZZZZZ的字段的JSON内容
    string jsonStr = formData["ZZZZZZZZZZ"];
    // 反序列化为目标对象,可根据自己的技术栈选择 System.Text.Json 或 Newtonsoft.Json
    var targetObj = System.Text.Json.JsonSerializer.Deserialize<YourModelClass>(jsonStr);

    // 此处写后续业务逻辑
    return Ok();
}

可选进阶:自动模型绑定实现

如果希望通过 [FromForm] 直接绑定到模型,无需手动反序列化,可通过自定义 TypeConverter 实现:

  1. 定义请求模型和JSON结构模型:
// 完整表单请求模型
public class FormRequestModel
{
    // 对应表单中name为ZZZZZZZZZZ的JSON字段
    public YourJsonModel ZZZZZZZZZZ { get; set; }
}

// JSON对应的业务模型
public class YourJsonModel
{
    // 按实际JSON结构定义属性
    public string DemoProperty { get; set; }
}
  1. 给JSON模型添加自定义转换器:
[TypeConverter(typeof(JsonTypeConverter<YourJsonModel>))]
public class YourJsonModel
{
    // 模型属性
}

// 通用JSON类型转换器
public class JsonTypeConverter<T> : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        return sourceType == typeof(string) || base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
        if (value is string jsonStr)
        {
            return System.Text.Json.JsonSerializer.Deserialize<T>(jsonStr);
        }
        return base.ConvertFrom(context, culture, value);
    }
}
  1. 接口方法直接绑定模型即可:
[HttpPost]
[Route("[action]")]
public IActionResult YYYYYYY([FromForm] FormRequestModel request)
{
    // request.ZZZZZZZZZZ 就是已经反序列化完成的对象
    return Ok();
}

注意事项

  • 不要直接同步读取 Request.Body,不仅容易出错,还会导致请求流被提前消耗,影响后续中间件执行
  • 原生 ReadFormAsync 已经兼容所有标准 multipart/form-data 格式,包括边界符特殊字符、多字段混合文件+文本等场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:39:04