【问题标题】:Unable to display an image from database in asp.net view无法在 asp.net 视图中显示数据库中的图像
【发布时间】:2017-01-07 04:47:09
【问题描述】:

我不知道为什么,但我无法在我的视图中显示我的数据库中的图像。它以适合图像的分辨率出现,但它基本上是透明的。我不确定我保存图像的方式是否有问题(不应该),或者它是否有显示。如果我的问题太基本了,我很抱歉,但我坚持的比我必须的要多:(

这里是问题的截图:

属性值: src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBPUq7Xpi>

这是我的模型的外观:

    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>

任何帮助将不胜感激。

【问题讨论】:

  • 检查生成的 HTML 页面源代码:您看到 img src 属性值中的预期内容了吗?
  • 另外,在cshtml中放置一个断点并检查@Model.ImageData数组。你那里有一些数据吗?
  • @uncoder 。我刚刚在问题中添加了这个值。
  • @Alexei ,是的,有一个值。我可以在数据库中看到它
  • @RobertRoss,试试我的答案。

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


【解决方案1】:

猜猜你显示的值是什么:

src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEB34V2yao/pPUpqp="

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

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

话虽如此,您的代码很好,正是您正在使用的数据让您认为存在问题。

【讨论】:

  • 我会尝试重新上传图片。 p.s здрасти :д
  • 只要确保上传更多 可见 图像 :-)
  • 是的,谢谢。它现在起作用了。我不知道这是怎么发生的:D
猜你喜欢
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多