如何将文件和 json 对象从邮递员传递到 asp.net 核心 webapi

Posted

技术标签:

【中文标题】如何将文件和 json 对象从邮递员传递到 asp.net 核心 webapi【英文标题】:How to pass a file and json object from a postman to asp.net core webapi 【发布时间】:2019-08-04 18:56:23 【问题描述】:

我有一个带有以下签名的 post 方法,

[HttpPost] public ActionResult SavePriorAuthorization(MainPriorAuthorization priorAuthorization, IFormFile 文件)

现在我想从邮递员那里传递对象和文件。我尝试了以下不起作用的选项。

这会报错,System.ArgumentNullException: Value cannot be null.Parameter name: header

标题类型:multipart/form-data

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我通常做的是创建一个像这样的 ViewModel:

public class MainPriorAuthorizationViewModel
   
    public IFormFile File  get; set; 
    public string TestName  get; set; 

然后创建一个带有 [FromForm] 属性的动作,以便它知道它需要从哪里映射:

[HttpPost]
public void Post([FromForm]MainPriorAuthorizationViewModel priorAuthorization)

   //do logic

然后在我的邮递员中它看起来像这样:

希望对你有帮助

【讨论】:

【参考方案2】:

尝试更改MainPriorAuthorization模型中key的设置,可以直接将模型的属性名设置为Postman中的key。

以下是我测试并运行良好的示例代码:

嘉宾模特

 public class Guest

    public int Id  get; set; 
    public string Name  get; set; 

在参数中添加[FromForm]属性

[HttpPost]
    public void SaveGuest([FromForm]Guest guest,IFormFile file)
      

邮差截图

【讨论】:

以上是关于如何将文件和 json 对象从邮递员传递到 asp.net 核心 webapi的主要内容,如果未能解决你的问题,请参考以下文章

邮递员 - 如何将全局变量传递到 JSON 正文

传递需要的大量 Json 对象时如何改进 Asp.net Mvc 应用程序?

将对象从dll文件传递到文件asp.net c#后面的代码

如何将两个不同的对象传递给邮递员中的 POST 请求以测试 RESTful API?

如何使用 Ajax 和 ASP.NET WebMethod 传递 JSON 对象

xamarin 发送的 Json 结尾没有数据