繁体   English   中英

Postman POST 请求 Model 绑定不适用于 IFormfile 属性

[英]Postman POST request Model binding not working with an IFormfile property

我有一个像这样的 model。

    public class ClientDto
    {
       public string FirstName { get; set; }
       public string LastName { get; set; }
       public string PhoneNumber { get; set; }
       public string Address { get; set; }
       public IFormFile ProfilePicture { get; set; }
     }

和 API controller 这样的:

    [HttpPost]
    public async Task<OperationResult> Post([FromForm] ClientDto c)
    {
        ImageHandler handler = new ImageHandler(env);
        Client client = new Client()
        {
            Address = c.Address,
            FirstName = c.FirstName,
            LastName = c.LastName,
            PhoneNumber = c.PhoneNumber,
            PhotoPath = await handler.UploadFile(c.ProfilePicture)
        };
        return await clientRepository.AddClient(client);
    }

现在,如果我在包含一个以ProfilePicture作为键的文件(在Postman >> Body >> form-data 部分下)后使用 postman 发出Post请求,model 绑定将按预期工作。 api controller 接收PofilePicture和 rest 属性null 但是,如果我将 json 字符串用于类似这样的其他属性(在 Postman >> Body >> raw部分下)

    {
     "c":{
          "FirstName": "XYZ",
          "LastName":"ABX"
         }
    }

或者

     {
          "FirstName": "XYZ",
          "LastName":"ABX"
     }

model 绑定不再有效。 如果我想提供所有属性,如何使用 postman 击中 api controller?

您正在混合发送到 controller 的数据 - 它很混乱。

在您对图像的请求中,内容类型是multipart/form-data ,因为正文包含一个文件和可能的其他表单数据字段。 在带有 JSON 的请求中,内容类型是application/json并且您没有发送任何文件数据。

您必须决定仅发送 JSON 或表单数据。

在这种情况下,由于您要发送文件,因此您需要使用multipart/form-data并只需在 Postman 的表单字段中设置缺少的字段( 请参阅此处如何设置 Postman 表单数据参数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM