在ASP.NET Core中使用MultiFormDataContent上载文件的最佳实践

时间:2019-02-06 10:37:10

标签: c# asp.net

我有一个上载api,该列表接收IFiles的列表以上载到服务器。现在,我需要一个附加字符串来描述上传,以获取详细信息。我当前的控制器如下:

[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files)
{
   // upload to server and other stuff
}

要访问字符串,我已经更改了控制器:

[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files, string uploadDescription)
{
   //some code
}

我现在可以访问uploadDescription。测试时,我以MultipartFormDataContent的形式发送文件,并以查询参数的形式发送描述。
尽管这行得通,但我不确定是否可以通过post操作以这种方式发送查询参数是否是最佳实践。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

执行这种Post方法没有最佳实践,但是据我所知,将单元DTO传递给PostGet的方法会更好,也很容易理解,因此我认为最好将其更改为:

public class FileSpec
{
    public List<IFormFile> Files {get; set;}
    public string UploadDescription {get; set;}
} 

并更改您的方法签名,例如:

public async Task<IActionResult> Post([FromBody]FileSpec fileSpec)

无论如何,这取决于您自己传递参数还是将其作为DTO传递。

您还可以了解有关参数绑定here的更多信息。

相关问题