将图像上传到数据库ASP.NET

时间:2015-05-06 13:04:59

标签: c# asp.net .net entity-framework

我正在尝试将图片直接上传到我的数据库。我遇到的问题是对象引用未设置为对象上的实例。

首先,我在我的模型中添加了一个属性。

public class Product
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    ...

    public byte[] MainPhoto { get; set; }

    ...

}

我使用Entity Framework来更新我的产品表,那里的一切都很好。

然后我在我的控制器中使用此方法将位写入db。

public ActionResult Create([Bind(Include = "ID,Title,Price,Description,Availability,Category,ApplicationUserID")] Product product, HttpPostedFileBase ImageFile)
{
  if (ModelState.IsValid)
  {
    db.Products.Add(product);
    var userID = User.Identity.GetUserId();
    product.ApplicationUserID = userID;

    using (var ms = new MemoryStream())
    {
      {
        ImageFile.InputStream.CopyTo(ms);
        product.MainPhoto = ms.ToArray();
      }
    }

    db.SaveChanges();
    return RedirectToAction("Index");
  }
  return View(product);

最后,我把这个输入放在我的HTML模板中。

<label for="ImageFile">Upload Image:</label>
<input name="ImageFile" type="file" />

我得到的例外情况是:

&#34;对象引用未设置为对象的实例。&#34;

这就是在这一行上抛出异常:

ImageFile.InputStream.CopyTo(ms);

似乎它没有将var ms识别为MemoryStream的一个实例,但我并不是100%肯定。谢谢你的帮助!

0 个答案:

没有答案