将图像添加到ASP.net核心
我想添加一个图像作为模型类的一部分,并将其显示在索引视图上。 我有问题要么将图像分类为byte []或iFormFile。
这就是我想要实现的目标
-
创建一个页面以插入员工列表
-
在索引页面中,能够列出员工并查看他们的图像。
这是模型。
Employee.cs
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; namespace MvcMovie.Models { public class Employee { public int ID { get; set; } [Required] public string FirstName { get; set; } [Required] public string LastName { get; set; } [Required] public string Nationality { get; set; } [Required] public string NRIC { get; set; } [Required] public string StaffID { get; set; } [Required] public int AccessRights { get; set; } [Required] public DateTime DOB { get; set; } [Required(ErrorMessage = "Please Upload a Valid Image File. Only jpg format allowed")] [DataType(DataType.Upload)] [Display(Name = "Upload Product Image")] [FileExtensions(Extensions = "jpg")] public IFormFile Image { get; set; } public string ImageName { get; set; } } }
这是生成错误的控制器代码部分。
EmployeeController.cs
[HttpPost] [ValidateAntiForgeryToken] public async Task Create(Employee employee, IFormFile Image) { if (ModelState.IsValid) { if (Image != null && Image.Length > 0) { var file = Image; var uploads = Path.Combine(_environment.WebRootPath, "uploads\\img\\employees"); if (file.Length > 0) { var fileName = ContentDispositionHeaderValue.Parse (file.ContentDisposition).FileName.Trim('"'); System.Console.WriteLine(fileName); using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create)) { await file.CopyToAsync(fileStream); employee.ImageName = Path.Combine(uploads, file.FileName); } var imageUrl = Path.Combine(uploads + file.FileName); } } _context.Add(employee); await _context.SaveChangesAsync(); return RedirectToAction("Index"); } else { var errors = ModelState.Values.SelectMany(v => v.Errors); } return View(employee); }
Create.cshtml