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