我不知道为什么,但我无法在我的 View 中显示来 self 的数据库的图像。它以适合图像的分辨率出现,但基本上是透明的。我不确定我保存图像的方式是否有误(不应该)或者是否有显示内容。如果我的问题太基础了,我很抱歉,但我比我必须做的更多:(
属性值: src="data:image/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);
}
和 View :
@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>
我们将不胜感激。
最佳答案
猜猜你显示的值是什么:
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp/PU="
惊喜:300x225 空 PNG 图像(透明背景):
因此,如果您希望在浏览器中看到它们,请确保将一些真实图像放入数据库中。否则,您在浏览器中得到的只是 300x225 像素的空白(这正是我们从您的屏幕截图中看到的内容)。
话虽如此,您的代码没问题,但您正在使用的数据让您认为存在问题。
关于c# - 无法在 asp.net View 中显示来自数据库的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41513949/