Entity framework 如何使用MVC4将图像保存到数据库
所以我有一个项目,这是一个购物车,我必须保存图像到数据库,而不是上传到服务器上,这是我的模型Entity framework 如何使用MVC4将图像保存到数据库,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,所以我有一个项目,这是一个购物车,我必须保存图像到数据库,而不是上传到服务器上,这是我的模型 namespace ShoppingCart.Models { [Bind(Exclude = "ItemID")] public class Item { [ScaffoldColumn(false)] public int ItemID { get; set; } [DisplayName("Category")]
namespace ShoppingCart.Models
{
[Bind(Exclude = "ItemID")]
public class Item
{
[ScaffoldColumn(false)]
public int ItemID { get; set; }
[DisplayName("Category")]
public int CategoryID { get; set; }
[DisplayName("Brand")]
public int BrandID { get; set; }
[Required(ErrorMessage = "A Name is required")]
[StringLength(160)]
public string Title { get; set; }
public string Description { get; set; }
[Required(ErrorMessage = "Price is required")]
[Range(0.01, 100.00,
ErrorMessage = "Price must be between 0.01 and 500.00")]
public decimal Price { get; set; }
[DisplayName("Album Art URL")]
[StringLength(1024)]
public string ItemArtUrl { get; set; }
public byte[] Picture { get; set; }
public virtual Category Category { get; set; }
public virtual Brand Brand { get; set; }
public virtual List<OrderDetail> OrderDetails { get; set; }
}
}
namespace ShoppingCart.Models
{
[Bind(Exclude=“ItemID”)]
公共类项目
{
[脚手架立柱(假)]
公共int ItemID{get;set;}
[显示名称(“类别”)]
public int CategoryID{get;set;}
[显示名称(“品牌”)]
public int BrandID{get;set;}
[必需(ErrorMessage=“需要一个名称”)]
[长度(160)]
公共字符串标题{get;set;}
公共字符串说明{get;set;}
[必需(ErrorMessage=“价格是必需的”)]
[范围(0.01,100.00,,
ErrorMessage=“价格必须介于0.01和500.00之间”)]
公共十进制价格{get;set;}
[显示名称(“相册艺术URL”)]
[StringLength(1024)]
公共字符串ItemArtUrl{get;set;}
公共字节[]图片{get;set;}
公共虚拟类别{get;set;}
公共虚拟品牌{get;set;}
公共虚拟列表OrderDetails{get;set;}
}
}
因此,我不确定如何在控制器上插入图像或在视图中显示图像,我已经搜索了有关这方面的信息,但我真的找不到任何信息,我首先使用实体框架代码。有两种简单的方法来创建图像——一种是在控制器中简单地返回图像本身:
[HttpGet]
[AllowAnonymous]
public ActionResult ViewImage(int id)
{
var item = _shoppingCartRepository.GetItem(id);
byte[] buffer = item.Picture;
return File(buffer, "image/jpg", string.Format("{0}.jpg", id));
}
视图只会引用它:
<img src="Home/ViewImage/10" />
并且认为:
@Html.Raw("<img src=\"data:image/jpeg;base64," + viewModel.ImageToShow + "\" />");
视图将类似于:
[HttpPost]
public ActionResult UploadImages(HttpPostedFileBase[] uploadImages)
{
if (uploadImages.Count() <= 1)
{
return RedirectToAction("BrowseImages");
}
foreach (var image in uploadImages)
{
if (image.ContentLength > 0)
{
byte[] imageData = null;
using (var binaryReader = new BinaryReader(image.InputStream))
{
imageData = binaryReader.ReadBytes(image.ContentLength);
}
var headerImage = new HeaderImage
{
ImageData = imageData,
ImageName = image.FileName,
IsActive = true
};
imageRepository.AddHeaderImage(headerImage);
}
}
return RedirectToAction("BrowseImages");
}
@using (Html.BeginForm("UploadImages", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="row">
<span class="span4">
<input type="file" name="uploadImages" multiple="multiple" class="input-files"/>
</span>
<span class="span2">
<input type="submit" name="button" value="Upload" class="btn btn-upload" />
</span>
</div>
}
@使用(Html.BeginForm(“UploadImages”,“Home”,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
}
@using (Html.BeginForm("UploadImages", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="row">
<span class="span4">
<input type="file" name="uploadImages" multiple="multiple" class="input-files"/>
</span>
<span class="span2">
<input type="submit" name="button" value="Upload" class="btn btn-upload" />
</span>
</div>
}