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

如何实现同时接收文件与DTO的ASP.NET Core控制器方法?

问题:Multipart请求同时接收文件与嵌套DTO的控制器实现问题

我需要实现一个控制器方法,支持在同一次multipart请求中同时接收文件和嵌套结构的DTO,并且要生成包含嵌套类型定义的正确OpenAPI规范。

简化代码示例

实际项目中SimpleDTO包含枚举、自定义类型等复杂属性,以下是简化版本:

public class SimpleDTO
{
     public string Property1 { get; set; }
     public string Property2 { get; set; }
     // 其他属性...
}

public class RequestWrapper 
{
    public IFormFile File { get; set; }
    public SimpleDTO? SimpleDto { get; set; }
}

[Post]
public async Task<IActionResult> TestMethod([FromForm]RequestWrapper dto)
{
    // 业务逻辑...
    return Ok();
}

当前问题

使用Postman测试该接口时返回400状态码,但如果将RequestWrapper中的SimpleDto属性替换为int等简单类型,接口可以正常运行。我尝试过为控制器参数和SimpleDTO类添加自定义模型绑定,但没有解决问题。

期望生成的OpenAPI规范

我需要生成如下结构的OpenAPI规范,确保基于该规范生成的客户端能正常调用接口:

requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties: 
                file:
                    type: string
                    format: binary
                SimpleDto:
                  $ref: '#/components/schemas/SimpleDTO'
      responses:
        '200':
          description: Success

备选方案(尽量不想采用)

将SimpleDTO单独作为方法参数,从请求体中手动获取文件,再通过OperationFilters为OpenAPI规范添加文件相关定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:46:03