0

我正在从 Active Directory 的属性 [“thumbnailPhoto”] 中读取图像。

我的模型将其分配给此:

public Image thumbnailPhoto { get; set; }

我的服务运行此代码以从 Active Directory 获取图像并将其放入我的模型中。

public Image GetUserPicture(string userName)
        {
            using (DirectoryEntry de = new DirectoryEntry("LDAP://server.com"))
            using (DirectorySearcher ds = new DirectorySearcher(de))
            {
                ds.Filter = ("(&(objectCategory=person)(objectClass=User)(sAMAccountName=" + userName + "))");
                ds.PropertiesToLoad.Add("thumbnailPhoto");
                SearchResult rs = ds.FindOne();
                using (MemoryStream s = new MemoryStream(rs.Properties["thumbnailPhoto"][0] as byte[]))
                {
                    return Bitmap.FromStream(s);
                }
            }
        }

我调用上面的方法并从这一行将其分配给模型:

user.thumbnailPhoto = GetUserPicture(rs.Properties["sAMAccountName"][0].ToString());

这一切似乎都在工作,没有错误,我可以在调试器中看到 user.thumbnailPhoto 的类型是 System.Drawing.Bitmap。

我现在卡住的地方是如何在网页上显示它?

是否可以将其thumbnailPhoto放入 a中Session["UserPhoto"],因为我在每一页上都需要它?

4

1 回答 1

2

我会将其转换为Base64 string然后将其用作源。

   using (MemoryStream s = new MemoryStream(rs.Properties["thumbnailPhoto"][0] as byte[]))
   {
       byte[] imageBytes = s.ToArray();
       string base64String = Convert.ToBase64String(imageBytes);
   }


   <img src="image/png;base64,@Model.ImageBase64String" />
于 2013-06-13T15:29:18.913 回答