我成功地将图像存储在数据库中作为二进制图像.我想以编辑形式显示这些图像以修改和保存更改.在Edit.cshtml表单中抛出System.OutOfMemoryException',同时显示数据库中的二进制映像.
有人可以请更正我的代码.
型号类:
public class Accommodation { [Key] public string A_Unique_Id { get; set; } public byte[] Picture1 { get; set; } public byte[] Picture2 { get; set; } public byte[] Picture3 { get; set; } }
// GET:/ Accommodation/Edit/5
public ActionResult Edit(string id) { Accommodation accommodation = db.Accommodation.Find(id); ViewBag.SelectedAustraliaStateId = new SelectList(db.AustraliaStates, "AustraliaStateId", "AustraliaStateName", accommodation.SelectedAustraliaStateId); return View(accommodation); }
// POST:/ Accommodation/Edit/5
[HttpPost] public ActionResult Edit(Accommodation accommodation) { if (ModelState.IsValid) { db.Entry(accommodation).State = EntityState.Modified; //the following line is for re-assigning back the DDL modified value. accommodation.State = accommodation.SelectedAustraliaStateId; db.SaveChanges(); return RedirectToAction("Index"); } return View(accommodation); }
Edit.cshtml
@Html.LabelFor(model => model.Picture1)@Html.EditorFor(model => model.Picture1) @Html.ValidationMessageFor(model => model.Picture1)
错误消息:类型'System.OutOfMemoryException'的异常被抛出@Html.EditorFor(model => model.Picture1)
在视图中显示图像
视图
<form method="post" enctype="multipart/form-data"> @{ if (Model.Picture1 != null) { string imageBase64 = Convert.ToBase64String(Model.Picture1); string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64); <img src="@imageSrc" /> } } <input type="file" name="photo" id="files" accept="image/*;capture=camera"> <button type="button">Submit</button> </form>
调节器
[HttpPost] public ActionResult Edit(Accommodation accommodation) { if (Request.Files["files"] != null) { byte[] Image; using (var binaryReader = new BinaryReader(Request.Files["files"].InputStream)) { Image = binaryReader.ReadBytes(Request.Files["files"].ContentLength); } } accommodation.Picture1=Image; //your code to save data }