从邮递员上传文件时,IFormFile 为空值

问题描述

我尝试通过邮递员将 IFormFile 上传到 Web API 进行测试,但错误显示 IFormFile 为空值

  [HttpPost]
  
        public void Post([FromForm] Product product,IFormFile file)
        {
            var imagePath = Path.Combine(_hostEnvironment.WebrootPath,"images",file.FileName);
            var streamImage = new FileStream(imagePath,FileMode.Create);
            file.copyTo(streamImage);
            var prod = new Product
            {
               Name = product.Name,Description=product.Description,Price=product.Price,BasePrice=product.BasePrice,Image=imagePath,CategoryId = product.CategoryId,};
            _repository.AddProduct(prod);
        }

邮递员请求

enter image description here

enter image description here

响应显示我的 IFromFile 是一个空值,但我无法找出我错过的地方。 你能帮助我吗?谢谢。

解决方法

这一行:

public void Post([FromForm] Product product,IFormFile file)

需要改成这样:

public void Post(
    [FromForm] Product product,[FromForm(Name = "Image")] IFormFile file)

您的邮递员将表单的文件属性名称显示为 "Image" not "file"。您的参数名称​​必须与表单名称匹配(不区分大小写)。

你也可以这样做:

public void Post([FromForm] Product product,[FromForm] IFormFile image)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...