Asp.net的WebAPI的文件上传与模型对象

问题描述 投票:0回答:1

项目(Azure上的.NET Framework 4.6.1)有谁知道是否有使用一个控制器同时接受文件的上传和在同一请求模型实体(JSON)的方式。客户端应用程序需要上传文件,以及有关文件的元数据,我们想如果可能的话做,在一个请求。

我想到了两种可能性:

  1. 发布文件(S)和个体模型字段(型号是平的),就好像它是一个web表单,以便从手工形式打造我的模型对象。 (一拉https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-2
  2. 发布文件(S)和模型对象作为另一个JSON文件和反序列化到我的模型对象作为自定义MultipartMemoryStreamProvider的一部分

我失去了一个选择吗? TIA

c# asp.net .net asp.net-web-api2
1个回答
0
投票

我会尝试只是将文件添加到模型或创建的数据,并在它的文件中既有视图模型。由于数据绑定,只要在客户端输入的字段相同的名称,该数据将在请求期间被映射到该对象。

模型:

public class yourModel
{
    public string name {get;set;}
    ...
    //other data

    public IFormFile yourFile {get;set;} //your file
    ...
}

控制器:

[Route("YourRoute")]
[HttpPost]
public async Task<WhateverYouWantToReturn> YourAction(yourModel model)
{
     //set a breakpoint here to see if your fields populated
     ...
     //do something with your model
     ...
     return WhateverYouWantToReturn;
}

查看:只要你输入字段的名称在对象的字段的名称相匹配,他们应该映射。

<form enctype="multipart/formdata" method="post" action="/your/route">
     <input type="text" name="name"/>
     <input type="hidden" name="somesHiddenField" value="yourValue" />
     ... <!-- Whatever other fields you need. -->
     <input type="file" name="yourFile"/>
     <input type="submit" value="Submit" />
</form>
© www.soinside.com 2019 - 2024. All rights reserved.