我想在“wwwroot / uploads / img”文件夹中上传图片,但是我收到错误.我写了以下代码:
创建视图:
@model imageuploader.Models.Employee <form method="post" enctype="multipart/form-data" asp-controller="Employee" asp-action="Create"> <div class="form-group"> <div class="col-md-10"> <input asp-for="FirstName" class="form-control" /> </div> </div> <div class="form-group"> <div class="col-md-10"> <input asp-for="LastName" Class="form-control" /> </div> </div> <div class="form-group"> <div class="col-md-10"> <input asp-for="ImageName" type="file" Class="form-control" /> </div> </div> <div class="form-group"> <div class="col-md-10"> <input type="submit" value="Create" /> </div> </div>
型号:
public class Employee { [Key] public int ID { get; set; } [Required] public string FirstName { get; set; } [Required] public string LastName { get; set; } public string ImageName { get; set; } }
调节器
private readonly RegisterDBContext _context; private readonly IHostingEnvironment _appEnvironment; public EmployeeController(RegisterDBContext context,IHostingEnvironment appEnvironment) { _context = context; _appEnvironment = appEnvironment; } [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create(Employee emp) { if (ModelState.IsValid) { var files = HttpContext.Request.Form.Files; foreach (var Image in files) { if (Image != null && Image.Length > 0) { var file = Image; //There is an error here var uploads = Path.Combine(_appEnvironment.WebRootPath,"uploads\\img"); if (file.Length > 0) { var fileName = Guid.NewGuid().ToString().Replace("-","") + Path.GetExtension(file.FileName); using (var fileStream = new FileStream(Path.Combine(uploads,fileName),FileMode.Create)) { await file.CopyToAsync(fileStream); emp.BookPic = fileName; } } } } _context.Add(emp); await _context.SaveChangesAsync(); return RedirectToAction("Index"); } else { var errors = ModelState.Values.SelectMany(v => v.Errors); } return View(emp); }
当我点击提交按钮时出现错误(标记错误行),如何在指定路径上传图像或文件?
错误:
NullReferenceException: Object reference not set to an instance of an object. imageuploader.Controllers.EmployeeController+<Create>d__2.MoveNext() in EmployeeController.cs var uploads = Path.Combine(_appEnvironmen.WebRootPath,"uploads\\img\\");
如何在指定路径中正确上传图像?
解决方法
我解决了它.我明白我最初很糟糕
_appEnvironment
在构造函数中.
通过重复编辑,所有相关代码目前都是正确的.
谢谢@Shyju用户.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。