首页 > 解决方案 > AspnetCore.Mvc 上传文件错误,即使 IFormfile 有效,var caminho 始终为空

问题描述

我尝试上传图片,但 var root 始终为空...

NullReferenceException:对象引用未设置为对象的实例。

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Vinhoid,Nome,Ano,Teoralcool,Produtorid,Tipoid,Regiaoid,Datacriacao,Localimagem,Garrafid,Descricao,Preco,Stock")] VinhoDistribuicao vinhoDistribuicao, IFormFile Localimagem)
{
    if (HttpContext.Session.GetString("TipoUtilizador") == "Garrafeira")




    {
        if (ModelState.IsValid)
        {
           if (_context.Vinho.Any(x => x.Ano == vinhoDistribuicao.Ano && x.Nome == vinhoDistribuicao.Nome && x.Tipoid == vinhoDistribuicao.Tipoid) == false)

           {

                var caminho = Path.Combine(he.WebRootPath + "/ImageFiles",
                    Path.GetFileName(Localimagem.FileName));

                FileStream fileStream = new FileStream(caminho, FileMode.Create);
                Localimagem.CopyTo(fileStream);
                fileStream.Close();

HTML

@model Lab4_Vinhos6.Models.VinhoDistribuicao

<div class="form-group">
    <label asp-for="Localimagem" class="control-label"></label>
    <input asp-for="Localimagem" type="file" accept=".png, .jpg" class="form-control" value="" />

    <span asp-validation-for="Localimagem" class="text-danger"></span>
</div>

NullReferenceException:对象引用未设置为对象的实例。

var caminho = Path.Combine(he.WebRootPath + "/ImageFiles",

标签: c#asp.net-core-mvc

解决方案


确保您ImageFiles在 wwwroot 中有该文件夹。然后尝试使用下面的代码

var caminho = Path.Combine(he.WebRootPath, "ImageFiles",Path.GetFileName(Localimagem.FileName));

推荐阅读