• 在AD中存取照片


    AD中有存放照片的字段吗?
    答案肯定是有的、photo,jpegPhoto,thumbnailPhoto

    前端时间客户,包括领导 在问通讯录中的照片为什么存在数据库中而不是AD中,AD中的属性能不能利用起来呢?
    我想照片这么大的数据,如果用户量大的,应该是不建议存放在AD端的,不然为什么微软的ad管理器都没有照片的管理项呢?

    但是既然领导问了,当然要去验证一下。。

     1   
     2 //获取需要修改的用户对象实体
     3 private DirectoryEntry getDirectoryEntryBy(string samAccountName)
     4         { 
     5             string path="LDAP://pcdc01.company.com/OU=上海XX软件有限公司,dc=company,dc=com";
     6             DirectoryEntry rootde = new DirectoryEntry(path, "userid""pwd"); //访问用户
     7             DirectorySearcher ds = new DirectorySearcher(rootde);
     8             ds.SearchScope = SearchScope.Subtree;
     9             ds.Filter = "(&(&(objectCategory=person)(objectClass=user))(sAMAccountName=" + samAccountName + "))";
    10             SearchResult sr = ds.FindOne();
    11             if (sr != null)
    12             {
    13                return sr.GetDirectoryEntry();
    14             }
    15             else 
    16             {
    17                 return null;
    18             }
    19         }

     1 //以下代码是从AD中取图片 
     2 
     3 string account = this.tbAccount.Text;
     4             if ( account == "" )
     5             {
     6                 MessageBox.Show("请填写帐号");
     7                 return;
     8             }
     9             DirectoryEntry de = getDirectoryEntryBy(account);
    10             if (de == null)
    11             {
    12                 MessageBox.Show("帐号无效");
    13                 return;
    14             }
    15             string photocol = this.cbbPhotoCol.Text; //那个字段存取照片,三个中选一个
    16             
    17             System.DirectoryServices.PropertyValueCollection pvc = de.Properties[photocol];
    18             if (pvc.Value != null && pvc.Value is byte[])
    19             {
    20                 byte[] by = (byte[])pvc.Value;
    21                 MemoryStream Stream = new MemoryStream(by);
    22                 this.pbcontainer.Image = Image.FromStream(Stream);
    23             }
    24             else
    25             {
    26                 MessageBox.Show("False");
    27             }


     1 
     2将照片存到AD中
     3
     4string account = this.tbAccount.Text;
     5            if (account == "")
     6            {
     7                MessageBox.Show("请填写帐号");
     8                return;
     9            }

    10          
    11            string cc = this.textBox1.Text;
    12            if (cc == "")
    13            {
    14                MessageBox.Show("请选择图片");
    15            }

    16            else
    17            {
    18               Image im= Image.FromFile(cc);
    19               MemoryStream Stream = new MemoryStream();
    20               im.Save(Stream, System.Drawing.Imaging.ImageFormat.Jpeg);
    21               byte[] bb=Stream.GetBuffer();
    22               DirectoryEntry de = getDirectoryEntryBy(this.tbAccount.Text);
    23               if (de == null)
    24               {
    25                   MessageBox.Show("帐号无效");
    26                   return;
    27               }

    28               string photocol = this.cbbPhotoCol.Text;
    29               System.DirectoryServices.PropertyValueCollection pvc = de.Properties[photocol];
    30               pvc.Value = bb;
    31               de.CommitChanges();
    32               MessageBox.Show("更新成功");
    33            }

    出处:http://www.cnblogs.com/xuanye/archive/2008/05/13/1195225.html

  • 相关阅读:
    第221题:最大正方形
    第238题:除自身以外数组的乘积
    简单易懂的拓扑排序
    第207题 课程表
    第198题:打家劫舍
    第四章 初始化与清理
    【笔记】jquery判断两个日期之间相差多少天
    【笔记】spring定时器时间配置实例
    【笔记】jquery加减乘除及科学计算法处理
    string 日期相加和相减
  • 原文地址:https://www.cnblogs.com/mq0036/p/8482668.html
Copyright © 2020-2023  润新知