我正在尝试将图片直接上传到我的数据库。我遇到的问题是对象引用未设置为对象上的实例。
首先,我在我的模型中添加了一个属性。
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%肯定。谢谢你的帮助!