实体框架 – 如何使用MVC将图像保存到数据库4
发布时间:2020-05-28 13:37:57 所属栏目:MsSql 来源:互联网
导读:所以我有一个项目是购物车,我必须将图像保存到数据库,而不是将其上传到服务器,这里是我的模型 namespace ShoppingCart.Models{ [Bind(Exclude = ItemID)] public class Item { [ScaffoldColumn(false)] public int ItemID { get
|
所以我有一个项目是购物车,我必须将图像保存到数据库,而不是将其上传到服务器,这里是我的模型 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; }
}
}
所以我不知道如何去控制器插入图像或视图来显示它们,我已经搜索关于这个的信息,但我不能真正找到任何东西,我使用实体框架代码。 解决方法图像有两种简单的方法:一种是简单地将图像本身返回到控制器中:[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" /> 此外,您可以将其包含在ViewModel中: viewModel.ImageToShow = Convert.ToBase64String(item.Picture); 并认为: @Html.Raw("<img src="data:image/jpeg;base64," + viewModel.ImageToShow + "" />");
对于数据存储,您只需使用字节数组(varbinary(max))或blob或任何兼容类型。 上传图片 这里,一个名为HeaderImage的对象是EntityFramework EntityObject。控制器看起来像: [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>
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
