文件上载始终为null,错误对象引用未设置为对象的实例

时间:2017-05-31 10:00:53

标签: c# asp.net asp.net-web-api model-view-controller asp.net-web-api2

我正在尝试上传单个 .txt 文件,并阅读其内容。我正在使用IFormFile来做到这一点。我的控制器基本上就像

public IHttpActionResult PostCellInfo(IFormFile file)
{

    using (var reader = new StreamReader(file.OpenReadStream()))
    {

        var fileContent = reader.ReadToEnd();
    }
}

我索引中的表单是

  <form name="upload" method="post" enctype="multipart/form-data" action="api/CellInfoes">
        <div>
            <input name="file" type="file" />
            <input type="submit" value="upload" />
        </div>
    </form>

但错误仍然说

  

“ExceptionMessage”:“对象引用未设置为的实例   对象“。

我认为“文件”总是null。有什么想法吗?

我读过这些名字必须匹配 - 但我认为这在我的代码中是可以的。

1 个答案:

答案 0 :(得分:0)

参数应为IList<IFormFile> files

public IHttpActionResult PostCellInfo(IList<IFormFile> files)
{
     foreach (var file in files) {
        if (file.Length > 0) {
            using (var reader = new StreamReader(file.OpenReadStream()))
            {  
               var fileContent = reader.ReadToEnd();
            }
        }
     }
}

并在视图中更改name属性:

<form name="upload" method="post" enctype="multipart/form-data" action="api/CellInfoes">
        <div>
            <input name="files" type="file" />
            <input type="submit" value="upload" />
        </div>
    </form>

我还没有对此进行测试,但它应该指向正确的方向。 如果您想在没有收藏集的情况下使用IFormFile,请查看此post