2016-06-07 109 views
0

如何獲取網頁上的圖像控件從sqlreader顯示?asp.net從sqlreader顯示圖像

我有一個sqlreader與二進制數據和內容類型字段,但不知道如何讓它顯示到我的網頁上的圖像控件。

找到了「GetStream」方法,但找不到我需要的語法。從SQLReader的

字段是: IMAGE1,對於二進制數據 Image1Content,對於內容類型(圖像/ JPG) Image1Name,爲圖像名稱

頁上的圖像的控制是 「IMAGE1」

我在後面的頁面上分配其他控件,並希望對圖像控件執行相同的操作。

試過,但最後得到的讀者[「圖像1」]錯誤:

while (reader.Read()) 
       Image1.ImageUrl = reader.GetStream("data:image/jpg;base64," + Convert.ToBase64String((byte[])reader.["Image1"])); 
+1

有兩種方法。 1)簡單和2)不簡單。 1)使用base64和數據協議進行圖像處理。 2)你必須放置圖像的id,並使用ashx從數據庫中獲取圖像。在閱讀器中使用函數getBytes或getStream。 –

+1

可能的重複[如何使用ASP.NET顯示來自SQL Server的圖像?](http://stackoverflow.com/questions/11284217/how-can-i-display-an-image-from-sql-server -using-asp-net) – Spivonious

+0

@nick_n_a請看我剛添加的代碼。 –

回答

1

它總是有利於做多步的東西,所以你可以看的更清楚,事情會出錯。你不需要GetStream()reader["Image1"],他們完成幾乎相同的事情。我將演示後者,因爲我不知道Image1是什麼指數:

while (reader.Read()) 
{ 
    byte[] imgBytes = (byte[])reader["Image1"]; 
    string encodedBytes = Convert.ToBase64String(imgBytes); 
    string url = string.Concat("data:image/jpg;base64,", encodedBytes); 
    Image1.ImageUrl = url; 
} 

不過,如果你有更多的一排,你將覆蓋的Read()每次迭代的圖像的URL。我懷疑你打算做什麼,但我無法真正瞭解。我懷疑你只想調用Read()一次,而不是在while循環中,但是如果只有一行,你不會注意到其中的差異。

+0

Crowcoder我認爲這是正確的,我需要找/正在尋找的路徑,請原諒這個新手問題,,,但我不確定會發生什麼在這裏//設置你的圖片url這裏的圖片數據在閱讀器中是「Image1」(還有圖片2-4)和一個名爲image1的圖片控件,我爲圖片控件設置了url之前,但沒有提到這樣的代碼隱藏項目,你是正確的,我不需要循環,這是用來顯示細節爲單個數據庫記錄。 –

+0

@BrentOliver,請參閱編輯。我不認爲我已經使用過網絡表單,因爲在我知道數據網址是什麼之前,但是嘗試設置'ImageUrl'。 – Crowcoder

+0

這工作,謝謝,現在能夠看到所有四個圖像。 –