首页 > 解决方案 > 表单数据绑定失败

问题描述

我有一个应该接收文件上传的 webapi。
一般定义是:

[Route("/{rdmId}/files/{fileName}")]
public class RDMFilesController : Controller
{
    /// <summary>
    /// Creates a new file for the given RDM. If the file already exists an error is returned.
    /// </summary>
    /// <returns></returns>
    [HttpPut]
    public async Task<IActionResult> PUT(string rdmId, string fileName, [FromForm]IFormFile file)
    {
         // DO STUFF
    }
}

在 Do Stuff 部分,如果您选中,file则为空。但是,如果您检查Request.Form.Files[0]文件是否存在!

我究竟做错了什么?我期待它file会被填充...

编辑1:到目前为止,客户端是遵循本教程的邮递员

标签: c#asp.net-core

解决方案


您应该使用如下属性装饰rdmIdfileName参数:[FromRoute]

    [HttpPut]
    public async Task<IActionResult> PUT([FromRoute]string rdmId, [FromRoute]string fileName, [FromForm]IFormFile file)
    {
         // DO STUFF
    }

此外,您应该将rdmIdandfileName放入路线中,并将文件作为Body->form-data在 Postman 中使用key=file.

在此处输入图像描述


推荐阅读