IFormFile文件在我的控制器上始终为空

时间:2019-08-08 06:16:55

标签: c# asp.net-core asp.net-web-api .net-core

当我从Postman向控制器发送文件时,对象 file 始终为空。

[Route("api/[controller]")]
[ApiController]
public class FileUploadController : BaseApiController<FileUploadController>
{
    public FileUploadController(ILogger<FileUploadController> logger) : base(logger) { }

    [HttpPost]
    [DisableRequestSizeLimit]
    public async Task<IActionResult> Post(IFormFile file)
    {
        MemoryStream ms = new MemoryStream(new byte[file.Length]);

在邮递员处,我将POST https://localhost:5001/api/FileUpload设置为无参数,无标题,将主体设置为表单数据和键:file,value我选择一个文件。发送。

在最后一行上方代码中的断点处,对象 file 始终为 null 如何将文件放入控制器?

enter image description here

3 个答案:

答案 0 :(得分:4)

第一个解决方案: 如果要使用form-data参数,还必须按照以下步骤在邮递员IFormFile中输入输入参数的名称: enter image description here

第二种解决方案: 使用.net Core 2.X从HttpContext获取文件:

        public async Task<IActionResult> Post()
        {
            IFormFile file = HttpContext.Request.Form.Files[0];
        }

答案 1 :(得分:0)

尝试一下:

在类中添加IFormFile类型的属性,例如:

public class FileData
{
    public IFormFile file { get; set; } 
} 

将该类添加为输入参数。

public async Task<IActionResult> Post([FromForm] FileData fileData)
{   
   // fileData.file 
}

您将在fileData.file

中获得附件

答案 2 :(得分:0)

唯一的问题是 F ile 而不是 f <如KDM所述,按Postman Body键上的em> ile 。