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 + "))";
             SearchResult sr = ds.FindOne();
             if (sr != null)
             {
                return sr.GetDirectoryEntry();
             }
             else 
             {
                 return null;
             }
         }
 1 //以下代码是从AD中取图片 
 2 
 3 string account = this.tbAccount.Text;
 4             if ( account == "" )
 5             {
 6                 MessageBox.Show("请填写帐号");
 7                 return;
 8             }
 9             DirectoryEntry de = getDirectoryEntryBy(account);
             if (de == null)
             {
                 MessageBox.Show("帐号无效");
                 return;
             }
             string photocol = this.cbbPhotoCol.Text; //那个字段存取照片,三个中选一个
             
             System.DirectoryServices.PropertyValueCollection pvc = de.Properties[photocol];
             if (pvc.Value != null && pvc.Value is byte[])
             {
                 byte[] by = (byte[])pvc.Value;
                 MemoryStream Stream = new MemoryStream(by);
                 this.pbcontainer.Image = Image.FromStream(Stream);
             }
             else
             {
                 MessageBox.Show("False");
             }
 1在AD中存取照片-LMLPHP 
 2在AD中存取照片-LMLPHP将照片存到AD中
 3在AD中存取照片-LMLPHP
 4在AD中存取照片-LMLPHPstring account = this.tbAccount.Text;
 5在AD中存取照片-LMLPHP            if (account == "")
 6在AD中存取照片-LMLPHP在AD中存取照片-LMLPHP            在AD中存取照片-LMLPHP{
 7在AD中存取照片-LMLPHP                MessageBox.Show("请填写帐号");
 8在AD中存取照片-LMLPHP                return;
 9在AD中存取照片-LMLPHP            }
在AD中存取照片-LMLPHP          
在AD中存取照片-LMLPHP            string cc = this.textBox1.Text;
在AD中存取照片-LMLPHP            if (cc == "")
在AD中存取照片-LMLPHP在AD中存取照片-LMLPHP            在AD中存取照片-LMLPHP{
在AD中存取照片-LMLPHP                MessageBox.Show("请选择图片");
在AD中存取照片-LMLPHP            }
在AD中存取照片-LMLPHP            else
在AD中存取照片-LMLPHP在AD中存取照片-LMLPHP            在AD中存取照片-LMLPHP{
在AD中存取照片-LMLPHP               Image im= Image.FromFile(cc);
在AD中存取照片-LMLPHP               MemoryStream Stream = new MemoryStream();
在AD中存取照片-LMLPHP               im.Save(Stream, System.Drawing.Imaging.ImageFormat.Jpeg);
在AD中存取照片-LMLPHP               byte[] bb=Stream.GetBuffer();
在AD中存取照片-LMLPHP               DirectoryEntry de = getDirectoryEntryBy(this.tbAccount.Text);
在AD中存取照片-LMLPHP               if (de == null)
在AD中存取照片-LMLPHP在AD中存取照片-LMLPHP               在AD中存取照片-LMLPHP{
在AD中存取照片-LMLPHP                   MessageBox.Show("帐号无效");
在AD中存取照片-LMLPHP                   return;
在AD中存取照片-LMLPHP               }
在AD中存取照片-LMLPHP               string photocol = this.cbbPhotoCol.Text;
在AD中存取照片-LMLPHP               System.DirectoryServices.PropertyValueCollection pvc = de.Properties[photocol];
在AD中存取照片-LMLPHP               pvc.Value = bb;
在AD中存取照片-LMLPHP               de.CommitChanges();
在AD中存取照片-LMLPHP               MessageBox.Show("更新成功");
在AD中存取照片-LMLPHP            }

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

05-28 21:04