Asp.net core mvc IFormFile上载图像ASP.NET核心MVC

Asp.net core mvc IFormFile上载图像ASP.NET核心MVC,asp.net-core-mvc,Asp.net Core Mvc,很抱歉打扰你们,但我有一个问题,我不知道如何解决,我已经浏览了几天,并尝试不同的解决方案 因此,我正在建立一个网站,我想实现一个用户部分,当用户可以上传他的个人图片作为图片配置文件 这就是我提出的问题所在,当我运行代码时,它总是返回null 这是我的控制器: [HttpPost] public async Task<IActionResult> Create(EmployeeCreateViewModel model) { if (ModelStat

很抱歉打扰你们,但我有一个问题,我不知道如何解决,我已经浏览了几天,并尝试不同的解决方案

因此,我正在建立一个网站,我想实现一个用户部分,当用户可以上传他的个人图片作为图片配置文件

这就是我提出的问题所在,当我运行代码时,它总是返回null

这是我的控制器:

[HttpPost]
    public async Task<IActionResult> Create(EmployeeCreateViewModel model)
    {

        if (ModelState.IsValid)
        {


            string uniqueFileName = null;
            if(model.Photo != null)
            {
                string uploadsFolder = Path.Combine(_hostingEnvironment.WebRootPath, "EmpImg");
                uniqueFileName = Guid.NewGuid().ToString() + "_" + model.Photo.FileName;
                using(var fs = new FileStream(Path.Combine(uploadsFolder, uniqueFileName), FileMode.Create))
                {
                    await model.Photo.CopyToAsync(fs);
                }


            }
            Employee newEmployee = new Employee
            {
                Name = model.Name,
                Surname = model.Surname,
                Email = model.Email,
                Area = model.Area,
                PhotoPath = uniqueFileName
            };
            _employeeRepository.Add(newEmployee);
            return RedirectToAction("details", new { id = newEmployee.Id });
        }

        return View();

    }
[HttpPost]
公共异步任务创建(EmployeeCreateViewModel模型)
{
if(ModelState.IsValid)
{
字符串uniqueFileName=null;
如果(model.Photo!=null)
{
string uploadsFolder=Path.Combine(_hostingEnvironment.WebRootPath,“EmpImg”);
uniqueFileName=Guid.NewGuid().ToString()+“933;”+model.Photo.FileName;
使用(var fs=newfilestream(Path.Combine(uploadsFolder,uniqueFileName),FileMode.Create))
{
等待model.Photo.CopyToAsync(fs);
}
}
Employee newEmployee=新员工
{
Name=model.Name,
姓氏=模特。姓氏,
Email=model.Email,
面积=模型面积,
光路=唯一文件名
};
_employeeRepository.Add(新员工);
返回RedirectToAction(“details”,new{id=newEmployee.id});
}
返回视图();
}
这就是我的观点

<form enctype="multipart/form-data" asp-controller="Employee" asp-action="create" method="post">

    <div class="form-group row">
        <label asp-for="Name" class="col-sm-2 col-form-label"></label>
        <div class="col-sm-10">
            <input asp-for="Name" class="form-control" placeholder="Name..." />
            <span asp-validation-for="Name" class="text-danger"></span>
        </div>
    </div>

    <div class="form-group row">
        <label asp-for="Surname" class="col-sm-2 col-form-label"></label>
        <div class="col-sm-10">
            <input asp-for="Surname" class="form-control" placeholder="Surname..." />
            <span asp-validation-for="Surname" class="text-danger"></span>
        </div>
    </div>
    <div class="form-group row">
        <label asp-for="Email" class="col-sm-2 col-form-label"></label>
        <div class="col-sm-10">
            <input asp-for="Email" class="form-control" placeholder="Email..." />
            <span asp-validation-for="Email" class="text-danger"></span>
        </div>
    </div>

    <div class="form-group row">
        <label asp-for="Area" class="col-sm-2 col-form-label">Location:</label>
        <div class="col-sm-10">
            <select asp-for="Area" class="custom-select mr-sm-2" asp-items="Html.GetEnumSelectList<Area>()">
                <option value="">Please Select..</option>
            </select>
            <span asp-validation-for="Area" class="text-danger"></span>

        </div>
    </div>

    <div class="form-group row">
        <label asp-for="Photo" class="col-sm-2 col-form-label"></label>
        <div class="col-sm-10">
            <div class="custom-file">
                <input asp-for="Photo" name="Create" class="form-control custom-file-input" />
                <label class="custom-file-label">Choose File...</label>
            </div>
        </div>
    </div>

    <div asp-validation-summary="All" class="text-danger"></div>
    <div class="form-group row">
        <div class="col-sm-2">
            <button type="submit" class="btn btn-primary">Create</button>
        </div>
    </div>
    @section Scripts {
    <script>
        $(document).ready(function () {
            $('.custom-file-input').on("change", function () {
                var fileName = $(this).val().split("\\").pop();
                $(this).next('.custom-file-label').html(fileName);
            });
        });
    </script>
    }
</form>

地点:
请选择。。
选择文件。。。
创造
@节脚本{
$(文档).ready(函数(){
$('.custom file input')。打开(“更改”,函数(){
var fileName=$(this.val().split(“\\”).pop();
$(this).next('.custom file label').html(文件名);
});
});
}
当我尝试在浏览器中上传img时,它不会抛出任何exeption,它只是不会将图像上传到数据库,列为NULL


提前感谢大家提供的帮助或建议。

创建
视图中,您为
照片
字段添加了额外的
name=“Create”
,这会导致模型绑定失败。您需要将名称与模型的字段名称匹配

将下面的代码从

<div class="form-group row">
    <label asp-for="Photo" class="col-sm-2 col-form-label"></label>
    <div class="col-sm-10">
        <div class="custom-file">
            <input asp-for="Photo" name="Create" class="form-control custom-file-input" />
            <label class="custom-file-label">Choose File...</label>
        </div>
    </div>
</div>

@哈姆扎·艾尔·阿乌恩你好,问题解决了吗?
<div class="form-group row">
    <label asp-for="Photo" class="col-sm-2 col-form-label"></label>
    <div class="col-sm-10">
        <div class="custom-file">
            <input asp-for="Photo" class="form-control custom-file-input" />
            <label class="custom-file-label">Choose File...</label>
        </div>
    </div>
</div>
public class EmployeeCreateViewModel
{

    public string Name { get; set; }
    public string Surname { get; set; }
    public string Email { get; set; }
    public string Area { get; set; }
    public IFormFile Photo { get; set; }
}