2015-09-02 42 views
0

因此,我已經將該圖像呈現爲我想要在我的視圖中顯示的字節[]形狀。ASP MVC無法在視圖中顯示圖像

這是我的圖像模式:

public class ImageModel 
    { 
     public Byte[] imageFirst { get; set; } 
    } 

這是我的控制器從數據庫挑選出的圖像:

public ActionResult Image() 
    { 
     string cs = "Data Source=" + Environment.CurrentDirectory + "\\ImageDB.db"; 

     using (SQLiteConnection con = new SQLiteConnection(cs)) 
     { 
      var listOfImages = new List<ImageModel>(); 
      string stm = "SELECT * FROM Image"; 
      con.Open(); 

      using (SQLiteCommand cmd = new SQLiteCommand(stm, con)) 
      { 
       using (SQLiteDataReader rdr = cmd.ExecuteReader()) 
       { 
        while (rdr.Read()) 
        { 
         listOfImages.Add(new ImageModel 
         { 
          imageFirst = Serialize(rdr["image_first"]), 
         }); 
        } 

        rdr.Close(); 
        Images = listOfImages; 
       } 
      } 

      con.Close(); 
     } 
     return View(Images); 
    } 

    public static byte[] Serialize(object obj) 
    { 
     var binaryFormatter = new BinaryFormatter(); 
     var ms = new MemoryStream(); 
     binaryFormatter.Serialize(ms, obj); 
     return ms.ToArray(); 
    } 

這是當我嘗試顯示在圖像觀點:

<img src="data:image/jpg;base64,@(Convert.ToBase64String(@item.imageFirst))" width="300px"/> 

但我得到的是這樣的圖標:View image fail

我不能爲了我的愛找出爲什麼它不能顯示。圖像被存儲爲我只能假設爲數據庫中的一個blob,但現在我希望它們只是光盤上的圖像文件,因爲這似乎使它更容易將它們附加到視圖上。

+2

你的代碼有點混亂。您將模型添加到'listOfSlides',但將視圖與'listOfImages'一起返回,這似乎永遠不會被填充。 –

+0

是的,這確實有點令人困惑!現在已經修復了。 – Khaine775

+0

什麼是'rdr [「image_first」]'?圖像如何存儲到這個領域? – B2K

回答

-1

您正在使用哪種瀏覽器。 IE對數據URI有一個大小限制,我認爲它是32 KB。轉換爲base64後,圖像字符串的大小是多少?

0

假設imageFirst屬性是一個有效的圖像字節數組,則可能需要包括在輸出HTML原始模式:

<img src="data:image/jpg;base64,@Html.Raw(Convert.ToBase64String(item.imageFirst))" width="300px"/> 

此外,使用item代替@item因爲你已經@的()內,或者在示例@Html.Raw中。