无法在asp.net视图中显示数据库中的图像

时间:2017-01-06 20:37:06

标签: c# asp.net-mvc entity-framework

我不知道为什么,但我无法在我的视图中显示数据库中的图像。它出现在图像的正确分辨率中,但它基本上是透明的。我不确定我保存图像的方式是否错误(不应该)或者是否显示在图像中。我很抱歉,如果我的问题太基础了,但我对这个问题的关注比以往要多:(

此处是问题的屏幕截图:enter image description here

attr值:    SRC = “数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ / 8 / MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp / PU =”

在这里'我的模型看起来:

    public int CompId { get; set; }
    public byte[] ImageData { get; set; }
    [NotMapped]
    public HttpPostedFileBase UploadImage { get; set; }
    [NotMapped]
    public string ImageBase64 => System.Convert.ToBase64String(ImageData);
    public string CompanyName { get; set; }
    public string CompanyAddress { get; set; }

行动方法:

public ActionResult Create([Bind(Include = "CompId,ImageData,CompanyName,CompanyAddress,CompanyCountry,CompanyCity,CompanyPostalCode,CompanyPhoneNumber,EmailCA")] Company company, HttpPostedFileBase UploadImage)
        {
            if (ModelState.IsValid)
            {
                byte[] buf = new byte[UploadImage.ContentLength];
                UploadImage.InputStream.Read(buf, 0, buf.Length);
                company.ImageData = buf;

                db.Companies.Add(company);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(company);
        }

观点:

 @model eksp.Models.Company

@{
    ViewBag.Title = "Index";
}

<h2>Details</h2>

<div>
    <h4>Company</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.ImageData)
        </dt>

        <dd>
            <img src="data:image/png;base64,@Model.ImageBase64" />
        </dd>

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

猜猜你所展示的价值是什么:

  

SRC = “数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ / 8 / MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp / PU =”

惊喜:300x225空PNG图像(透明背景):

enter image description here

因此,如果您希望在浏览器中看到它们呈现,请确保在数据库中放置一些真实图像。否则,你将在浏览器中获得的是300x225像素的空白(这正是我们从你的截图中看到的)。

话虽这么说,你的代码很好,你正在使用的数据让你认为存在问题。