加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么IFormFile显示为null,我该如何解决?

发布时间:2020-12-16 00:20:03 所属栏目:asp.Net 来源:网络整理
导读:我在VS 2015中使用ASP.NET 5,MVC 6.我正在制作一个Web应用程序.在我的表格上我有: form method="post" enctype="multipart/form-data" div id="uploadSection" label Select files for upload/label input type="file" id="fileSelect" name="fileSelect" m
我在VS 2015中使用ASP.NET 5,MVC 6.我正在制作一个Web应用程序.在我的表格上我有:
<form method="post" enctype="multipart/form-data">
    <div id="uploadSection" >
        <label >Select files for upload</label>
        <input type="file" id="fileSelect" name="fileSelect" multiple />
    </div>

    <div>
        <input type="submit" id="thisbutton" value="button"  />
    </div>
    </form>

在我的控制器中:

[HttpPost]
    public async Task<IActionResult> FileForm(FileViewModel vm,IFormFile file)
    {
        if (ModelState.IsValid)
        {
            //IFormFileCollection files = Request.Form.Files;
            string filePath = Path.Combine("C:","transfers");
            //foreach (var file in files)
            //{
                if (file != null && file.Length > 0)
                {
                    var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                    await file.SaveAsAsync(Path.Combine(filePath,fileName));
                }
            //}
            ModelState.Clear();
        }
        return View();
    }

我有一个更大的表单,其中有母表单字段进入我的FormViewModel(所有字段都填充它们应该),我实际上尝试将IFormFileCollection,ICollection,IList,List作为上述方法中的参数,而是也直接把它放在我的视图模型中.无论我是作为单个文件还是多个文件,在模型或控制器中,我总是得到null.
‘IFormFileCollecion files = Request.Form.Files’实际上有效,但我不想这样做,因为它应该按照我拥有或拥有它的方式工作.
当我把文件的属性放在我的模型中时,我把“[Required]”放在它上面并且它不会触发.

而且,更好的是,我用fiddler多次运行它,它实际上是POST文件 – 所以为什么不将它们投射到模型中?

我的依赖关系错了吗?谁能想到可能导致这种情况的原因?

"dependencies": {
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final","Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final","Microsoft.AspNet.Mvc": "6.0.0-rc1-final","Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final","Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final","Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final","Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final","Microsoft.AspNet.Http":  "1.0.0-rc1-final","Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-final","Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final","Microsoft.Extensions.Logging": "1.0.0-rc1-final","Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final","Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final","Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
  },

解决方法

您的文件输入的名称属性为“fileSelect”.您的操作参数的名称是“file”.让它们匹配,它应该工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读