2017-01-06 76 views
3

我不知道爲什麼,但我無法在我的視圖中顯示數據庫中的圖像。它以圖像的正確分辨率出現,但基本上是可轉換的。我不確定在保存圖像的方式中是否存在錯誤(不應該)或者是否與顯示有關。我很抱歉,如果我的問題是太基本的,但我堅持這個比我必須:(無法在asp.net視圖中顯示數據庫中的圖像

這裏的問題是截圖:enter image description here

ATTR值: SRC =「數據:圖像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp/PU =」

Here'how我的模型看起來:

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> 

任何幫助將不勝感激。

+2

檢查生成的HTML頁面源代碼:您是否看到該img src屬性值中預期的內容? – uncoder

+0

另外,在cshtml中放置一個斷點並檢查'@ Model.ImageData'數組。你有一些數據嗎? – Alexei

+0

@uncoder。我只是在問題中添加了這個值。 –

回答

3

猜測你已經示出的值是:

SRC = 「數據:圖像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAASwAAADhCAYAAAByfIirAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAANL5JREFUeNrsnQl8VNXZ/8/MZJIJ2UMWIAkJCWFLwhpWAQEBKasoBkUUEBBpq7Xaoi34V2yp/PU =」

驚喜:300x225的空PNG圖片(透明背景):

enter image description here

因此,如果您希望在瀏覽器中看到它們,請確保您在數據庫中放置了一些真實圖像。否則,您在瀏覽器中獲得的是300x225像素的空白(這正是我們從屏幕截圖中看到的)。

這就是說,你的代碼是好的,這是你正在使用的數據,讓你覺得有問題。

+0

我會嘗試重新上傳圖像。 p.sздрасти: –

+0

只要確保上傳一些*可見*圖片:-) –

+0

是的,謝謝你。它現在有效。我不知道這是怎麼發生的:D –

相關問題