【问题标题】:Posting form data with file results in "The input was not valid" error使用文件发布表单数据会导致“输入无效”错误
【发布时间】:2018-12-09 17:06:39
【问题描述】:

我正在使用 Postman 测试 .Net Core 2.1 Web API。我从这个开始,它成功了——我能够将文件从 Postman 发送到我的 Web API。

Web.API

[HttpPost("uploads")]
public IActionResult FileUpload(IFormFile myfile)
{
   ...
   return Ok();
}

但是,我需要将一些额外的表单数据与文件一起传递。根据我看到的其他帖子,我尝试了以下方法:

[HttpPost("uploads")]
public IActionResult FileUpload(UploadFile data)
{
    ...
    return Ok();
}

public class UploadFile {
   public IFormFile myfile {get; set;}
   public bool forceOverwrite {get; set;}
}

现在从 Postman 发帖会导致“输入无效”。我已经进行了一些搜索,但似乎找不到任何人已经得到了这样的工作。

更新

我还尝试了以下方法;但是,附加值始终为 false ——即使发送为 true。

public IActionResult FileUpload(IFormFile myfile, bool forceOverwrite)

更新 2

这是我在 Postman 中添加的内容,以及它在 Fiddler 中的显示方式。 (P.S. 你可以忽略 POST 中的路由与我的代码中列出的路由不匹配的事实——我选择简化帖子命名方面的内容。

【问题讨论】:

  • 您从 Postman 发送的 HTTP 请求未正确形成新 FileUpload(UploadFile 数据) 的签名,因此 Web API 无法正确解析它,您需要在问题中包含您的 Postman HTTP 请求.

标签: asp.net-core-webapi asp.net-core-2.1


【解决方案1】:

要在 .NET Core Web API 中绑定 FormData,您需要添加 FromForm 属性,如下所示

    [HttpPost("uploads")]
    public IActionResult FileUpload([FromForm]UploadFile data)
    {
        return Ok();
    }

【讨论】:

  • 非常感谢!我曾尝试过 FromBody,就像我以前使用以前版本的 Web API 一样,但这没有用。再次感谢一百万!
【解决方案2】:

你可以试试下面的

 public class UploadFile
    {

        public bool forceOverwrite { get; set; }
        public IFormFile File { get; set; }

    }

在你的控制器中

 [HttpPost]
        public async Task<IActionResult> UploadImage(UploadFile upload)
        {
            var file = upload.File; // This is the IFormFile file
            var param = upload.forceOverwrite; // param
            var filePath = Path.GetTempFileName();
            using (var stream = new FileStream(filePath, FileMode.Create))
                          await file.CopyToAsync(stream);
            return Ok(new { count = 1, path = filePath,filename=upload.forceOverwrite });
        }

这是邮递员的输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多