【问题标题】:POST Image and Body Data at the same time in ASP.NET Core WEB API在 ASP.NET Core WEB API 中同时 POST Image 和 Body Data
【发布时间】:2020-12-06 10:34:30
【问题描述】:

我正在尝试使用 ASP.NET Core 发布图像文件和一组参数。是否有任何选项/解决方案可以在 POST API 中同时发送模型数据和图像。这是 POSTMAN 中 POST API 的图像:

这是带有模型信息的正文:

如果我像下面的代码那样做,那么我的 companyInfo 数据为空并且图像在那里。

    [HttpPost("PostInformation")]
    public async Task<ActionResult<Company>> PostEmployeeJobCategories(IFormFile image, [FromForm]Company companyInfo)
    {
    }

如果我像下面的代码那样做,那么我会得到不受支持的媒体类型。

    [HttpPost("PostInformation")]
    public async Task<ActionResult<Company>> PostEmployeeJobCategories([FromForm]IFormFile image, [FromBody]Company companyInfo)
    {
    }

任何建议,如何实现目标?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc asp.net-core asp.net-web-api asp.net-web-api2


    【解决方案1】:

    在asp.net core中,你可以同时发送文件和数据,所以把你的模型改成:

     public class Company
        {
            public IFormFile Image { get; set; }
            public string NameEn { get; set; }
            public string Address { get; set; }
            //......
        }
    

    以及你的操作方法:

    [HttpPost("PostInformation")]
    public async Task<ActionResult<Company>>PostEmployeeJobCategories([FromForm] Company companyInfo)
          {
          }
    

    【讨论】:

    • 我在从 POSTMAN 发送数据时遇到问题,它在图像中发送空值
    【解决方案2】:

    添加 [FromForm] 属性并通过 Postman 中的表单数据选项卡发送所有内容对我有用:

    public class OtherData
    {
        public string FirstString { get; set; }
        public string SecondString { get; set; }
    }
    
    public async Task<IActionResult> Post(IFormFile file, [FromForm]OtherData otherData)
    {
         return Ok();
    }
    

    正如 vahid tajari 指出的那样,您还可以将 IFormFile 添加到类定义中。

    【讨论】:

    • 不,没有帮助
    • 非常感谢,但我有大量参数要传递,例如公司一般信息,然后是每个公司的多个公司业务类型,每个公司的多个联系人,多个设施类型,这是一对多...那么您可以提出其他解决方案吗?所有这些信息都在 BODY 中,图像文件在 form-data 中。所以请相应地提出建议
    • 在这种情况下,我什么都没有想到。也许这会对你有所帮助stackoverflow.com/questions/4083702/…
    猜你喜欢
    • 2020-07-18
    • 2022-10-07
    • 1970-01-01
    • 2016-10-16
    • 2019-02-05
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多