在Web api控制器中将[FromForm]与图像文件一起发布时,模型值显示为空

时间:2018-07-19 06:36:04

标签: asp.net image postman asp.net-core-2.0 asp.net-core-webapi

  

我的API如下。我正在尝试使用邮递员发布模型值和图像文件。但是,模型值未绑定。如何使用POSTMAN在图片文件中发布json数据?

[HttpPost]
   [Route("api/images_upload")]
   public IActionResult UploadImages([FromForm] Chapter chapter,IFormFile file)
   {
       try
       {

           var fileName = Path.GetFileName(file.FileName);
           var absoluteFileName = fileName.Replace(fileName, Guid.NewGuid().ToString());
           var extension = Path.GetExtension(fileName);
           var fullFileName = string.Concat(absoluteFileName, extension);

           var physicalPath = Path.Combine(HostingEnvironment.WebRootPath, "images", fullFileName);

           file.CopyTo(new FileStream(physicalPath, FileMode.Create));
           return Content("Images Uploaded");
       }
       catch (Exception ex)
       {
           throw ex;
       }

   }

2 个答案:

答案 0 :(得分:1)

要发布ChapterIFormFile file,您可以尝试在PostMan中使用form-data进行发布。

要发布IFormFile,您不能通过application/json内容类型进行传递。并且在发布form-data时,请勿将Content-Type添加为application/json,否则,.net核心将尝试JsonFormatter将请求主体绑定到模型而不是{{1 }},则FromForm将为空。

这是一个工作正常的PostMan演示。

enter image description here

请注意,没有chapter标头。

答案 1 :(得分:0)

以上都不适合我。但是我的问题已解决,方法是为该类型创建一个新类,然后使用Bind属性。

[Bind]
public class FileApplication
{
    public IFormFile Files { get; set; }
    public long Id { get; set; }


}