如何使用MVC 4从数据库显示二进制图像以编辑表单

 aaaaaaaaaaa的美丽人生_556 发布于 2023-01-30 17:30

我成功地将图像存储在数据库中作为二进制图像.我想以编辑形式显示这些图像以修改和保存更改.在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)

1 个回答
  • 在视图中显示图像

    视图

    <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
    }
    

    2023-01-30 17:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有