从DB填充图像控件

本文关键字:控件 图像 填充 DB | 更新日期: 2023-09-27 18:22:39

我被要求尝试从sql server DB中填充图像控件。当我以前这样做的时候,我会使用网格视图。

这可能吗,因为我在网上找不到任何可以看的例子。

我正在使用存储的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。什么?然后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;
}

从DB填充图像控件

您可以使用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 的图像