将带有asp.net core的文件作为字节数组上传到数据库中

use*_*152 2 c# asp.net-core-mvc asp.net-core

我的代码:

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string FullName { get; set; }
        public byte[] AvatarImage { get; set; }
    }

    public class EmployeeVm
    {
      public int EmployeeId { get; set; }
      public string FullName { get; set; }
      public IFormFile AvatarImage { get; set; }
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(EmployeeVm model)
    {
        if (ModelState.IsValid)
        {
            var employees = new Employee
            {
               FullName  = model.FullName
            };
            using (var memoryStream = new MemoryStream())
            {
                employees.AvatarImage = memoryStream.ToArray();
                await model.AvatarImage.CopyToAsync(memoryStream);

            }
            _context.Add(employees);
               await _context.SaveChangesAsync();
            return RedirectToAction("Index");
        }
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

我得到的只是

nullReferenceException: 未将对象引用设置为对象的实例。等待 model.AvatarImage.CopyToAsync(memoryStream);

我是 asp.net core 的新手,我不明白 asp.net core 如何处理MemoryStream.

Ton*_*nto 9

您必须先将 IFormFile 内容存储到内存流中。内存流对象是空的,所以调用它memoryStream.ToArray()是带来空值的原因。在调用上面的方法之前,先将上传的头像分配给它。

using (var memoryStream = new MemoryStream())
{
     await model.AvatarImage.CopyToAsync(memoryStream);
     employees.AvatarImage = memoryStream.ToArray();

}
Run Code Online (Sandbox Code Playgroud)