2013-07-16 103 views
0

我被要求嘗試從sql server數據庫填充圖像控件。當我這樣做之前,我會使用gridview。從數據庫填充圖像控件

這是可能的,因爲我無法找到任何示例來查看聯機。

我正在使用存儲的Proc和sqlDataReader.HasRows我想將圖像添加到圖像ID以顯示在頁面上。

之前我已經使用:

<img src='data:image/jpg;base64,<%# Eval("Photo") != System.DBNull.Value ? Convert.ToBase64String((byte[])Eval("Photo")): string.Empty %>' 
alt="Person Image" height="80" width="80" /> 

我不知道我會把如果reader.HasRows我在想ImageID.Something?然後ImageID.DataBind();

*編輯*

if (rdr.Read()) 
{ 
byte[] bytes = (byte[])rdr["Photo"]; 
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length); 
img_Pict.ImageUrl = "data:image/jpg;base64," + base64String; 
img_Pict.Visible = true; 
} 
+0

不知道如果我有你的問題。你對數據庫有什麼看法?一個圖像的路徑?保存爲二進制文件的圖像? – melancia

+0

[在asp.net中從數據庫檢索圖像]的可能的重複(http://stackoverflow.com/questions/14935205/retrieve-image-from-database-in-asp-net) –

+0

圖像被保存爲二進制。 – StudentRik

回答

0

可以使用ASHX通用處理器

< IMG SRC = 「image.ashx」>

它必須是這樣的

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 

public class ImageHandler : IHttpHandler 
{ 
public void ProcessRequest(HttpContext context) 
    { 
    GetFromDb(); 
    } 

private void GetFromDb() 
{ 
    //..... your database code here .... 

    byte[] content = (byte[])db.ExecuteScalar(sql); 
    HttpContext.Current.Response.ContentType = "image/jpeg"; 
    HttpContext.Current.Response.BinaryWrite(content); 
} 

public bool IsReusable 
{ 
get 
    { 
    return false; 
    } 
} 

}

將新的ashx添加到您的項目並將代碼複製到其中。

它工作時,你將能夠得到一個圖像作爲xyzdomain/image.ashx