从DB填充图像控件

时间:2013-07-16 12:16:11

标签: c# asp.net sql database proc

我被要求尝试从sql server DB填充图像控件。当我在使用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;
}

1 个答案:

答案 0 :(得分:0)

您可以使用ASHX通用处理程序

&LT; img src =“image.ashx”&gt;

一定是这样的

[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

的图像