【问题标题】:Picture retrieval from Active Directory c#从 Active Directory c# 中检索图片
【发布时间】:2018-05-11 07:19:18
【问题描述】:

我对 LDAP 尤其陌生,想知道是否有一种方法可以让我们知道在特定域的活动目录中填写了哪些信息。

例如,我正在尝试使用

获取组织员工的形象
var bytes = directoryEntry.Properties["thumbnailPhoto"].Value;

但这会返回 null。现在我想知道图像是否存在,也许我没有以正确的方式获得它或没有图像?

【问题讨论】:

    标签: c# authentication active-directory ldap


    【解决方案1】:

    试试这个方法

    var data = user.Properties["thumbnailPhoto"].Value as byte[];
    
    if (data != null)
        using (var s = new MemoryStream(data))
            return Bitmap.FromStream(s);
    else
        foreach (PropertyValueCollection p in user.Properties)
            Trace.WriteLine(p.PropertyName);
    

    仔细检查该属性,它可能是jpegPhoto

    byte[] data = user.Properties["jpegPhoto"].Value as byte[];
    

    来源:

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/02690cfa-c2c1-43d7-9f82-7d210cb86267/c-code-to-add-and-retrieve-user-photos-from-active-directory?forum=csharpgeneral

    【讨论】:

    • 我正在获取字节数组中的值(附件是问题中的图像)。如何在html页面上显示?
    • 将图像保存在某处Bitmap.FromStream(s).Save(path);,或管理响应以仅响应图像。如果您仍有问题,请打开一个新问题,因为它与原始问题无关。
    • 感谢它的工作!但是图像像素分辨率不好! :( 有什么办法让它变得更好?
    • 接受答案并打开一个新问题,但请先检查stackoverflow.com/a/42113158/643500
    【解决方案2】:

    转换成base64怎么样?

    var bytes = directoryEntry.Properties["thumbnailPhoto"].Value;
    
    if (buffer != null)
    var base64Thumb = Convert.ToBase64String(buffer);
            
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多