用代码实现Sharepoint2010的个人信息的照片上传(2)(原创)

用代码从AD读取照片信息并同步到SharePoint2010的个人照片信息中

  • 前言

上篇我们讲到用代码实现了照片信息同步到SharePoint2010的个人照片信息中,但是做的是从文件夹读取照片信息到SharePoint2010,今天我们要做的从AD的thumbnailPhoto属性中读取照片信息到SharePoint2010的个人照片信息中。

  • 实现方法

前提就是:AD的thumbnailPhoto属性已经存在照片(建议宽度和高度为96X96,AD默认图片大小)。

我在这里往contoso\\test7(提示:此用户存在Users的OU下,可以放在任何OU下都可以)这个账号上传一个漂亮MM的照片如下图:

上传前的照片如下:

clip_image001

上传到AD如下(注意:我这里以BASE64位编码保存的,所以代码需要用BASE64解码):

clip_image002

验证下运行同步代码前MOSS2010的test7个人站点看我的配置信息也没有照片如下图:

clip_image004

代码段:

特别注意:AD中的照片信息如以Base64编码保存的。那么读取来的时候需要解码,否则会提示:参数无效错误

附带:BASE64字符表格式如下:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

上传核心代码段(其他代码跟上篇一样http://www.cnblogs.com/love007/archive/2012/08/23/2652798.html):

 
        /// <summary>
        /// 从AD同步信息到MOSS2010
        /// </summary>
        private static void UploadADPhotos()
        {
            //得到网站集合
            SPSite mySites = new SPSite(MySiteHostUrl);
            //得到网站
            SPWeb myWeb = mySites.OpenWeb();
            SPFolder subfolderForPictures = myWeb.GetFolder("User Photos\\Profile Pictures");
 
            if (subfolderForPictures == null)
            {
                return;
            }
 
            UserProfileManager userProfileManager = new UserProfileManager(SPServiceContext.GetContext(mySites));
            //***********************************读取AD照片信息
            DirectoryEntry de = new DirectoryEntry("LDAP://DC=contoso,DC=com", "contoso\\mossadmin", "Passw0rd!", AuthenticationTypes.Secure);
            //读取AD的配置信息
            
            DirectorySearcher search = new DirectorySearcher(); 
            search.SearchRoot = de;
            //contoso\\test7照片信息
            search.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=test7))"; 
            search.PropertiesToLoad.Add("samaccountname");
            search.PropertiesToLoad.Add("thumbnailPhoto"); 
            SearchResult user;
            user = search.FindOne();
            if (user == null)
            {
                return;
            }
            byte[] buffer = (byte[])user.Properties["thumbnailPhoto"][0];
            //
            //***********************************读取AD照片信息
            //buffer
            if (buffer != null)
            {
                //
                string fileNameWithoutExtension = GetFileNameFromAccountName(MAccountName);
                
                //把AD照片赋值给
                int largeThumbnailSize = 0X90;
                int mediumThumbnailSize = 0X60;
                int smallThumbnailSize = 0X20;
                //上传3张
                //BASE64解码,我是以64编码保存的,所以需要解码,当然如果没有编码,不需要如下代码
                //******************************************BASE64解码
                string s = Encoding.Default.GetString(buffer);
                buffer = Convert.FromBase64String(s);
                //*******************************************BASE64解码
                using (MemoryStream stream = new MemoryStream(buffer))
                {
                    
                    using (Bitmap bitmap = new Bitmap(stream, true))
                    {
 
                        CreateThumbnail(bitmap, largeThumbnailSize, largeThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_LThumb.jpg");
                        CreateThumbnail(bitmap, mediumThumbnailSize, mediumThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_MThumb.jpg");
                        CreateThumbnail(bitmap, smallThumbnailSize, smallThumbnailSize, subfolderForPictures, fileNameWithoutExtension + "_SThumb.jpg");
                    }
                   
                }
 
                SetPictureUrl(MAccountName, subfolderForPictures, userProfileManager, mySites.Url);
            }
            myWeb.Dispose();
 
            mySites.Dispose();
        }
  • 测试结果

去个人站点下的用户配置信息看照片如下图:终于看到漂亮的MM

clip_image006

去【图片库】-【用户照片】可以看到如下图信息:

image

转载于:https://www.cnblogs.com/love007/archive/2012/08/24/2654307.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5实现Word中文字全环绕图片效果

实现这个功能是当时看见数字报的展示出来的编排方式&#xff0c;就是图片热点&#xff0c;而且下载打开还是PDF的&#xff0c;让我这个WP用户咋个看。想实现Word中的编排方式&#xff0c;也需要浏览器支持Word插件&#xff0c;火狐、谷歌、Opera这些都要另外弄插件&#xff0c;…

汇编指令的学习4——ldm/stm指令、栈的处理

1、为什么需要多寄存器访问指令&#xff1f; ldr/str每周期只能访问4字节内存&#xff0c;如果需要批量读取、写入内存时太慢&#xff0c;解决方案是stm/ldm ldm (load register mutiple) stm&#xff08;store register mutiple&#xff09; 2、举例&#xff1a;stmia sp,…

第一课 GCC入门

1序言 gcc是一个可移植的编译器&#xff0c;支持多种硬件平台&#xff1b;也不仅仅是一个本地编译器也是一个跨平台编译器&#xff1b;支持多张语言编译时按照模块化设计支持多种语言。 gcc编译过程&#xff1a;预处理&#xff08;预处理器&#xff09;&#xff1b;编译&#x…

[转载] 晓说——第9期:多如牛毛严酷无比的美国那些法

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2012/08/26/2657224.html

ARM的汇编伪指令【伪指令的解释】

本文作为此博文的伪指令章节的补充说明。 伪指令的含义 伪指令本质上不是指令。伪指令由编译器环境提供&#xff0c;用来指导编译过程&#xff0c;经过编译后伪指令不会生成机器码。 伪指令是和具体的编译器相关的。我们使用GNU工具链&#xff0c;因此学习GNU环境下的汇编伪指令…

关注 Imagine Cup 2010, 参与软件设计“最具人气奖”投票

关注 Imagine Cup 2010, 参与软件设计“最具人气奖”投票 Imagine Cup 2010全球总决赛将于7月3日到7月8日在波兰华沙举行。现在通过参与软件设计“最具人气”奖投票&#xff0c;你也可以参与到Imagine Cup 2010中。了解全球学生是如何用科技创新帮助我们解决人类面临的最困难问…

浏览器模拟用户登陆

javascript:document.getElementById(user).valuejack;document.getElementById(password).valuetest;submitForm();void(0);转载于:https://www.cnblogs.com/ahghy/p/3488839.html

Bzoj 2127 happiness 最小割

happiness 题解: 将图转换成最小割. 将割完的图中与S相连的点看做选文科, 与T相连的点看做选理科. flow(s, u) 文科值 flow(u,t) 理科值 假设u 和 v 一起选文科有奖励值z, flow(s,u) z/2 flow(s,v) z/2, flow(u,v) z/2 假设u 和 v 一起选理科有奖励值z, flow(u,t) z/2…

C中静态存储区和动态存储区

c语言中需要内存来存放数据。而内存主要分为两类&#xff1a;静态存储区和动态存储区。 1、静态存储区 &#xff08;1&#xff09;分为数据区&#xff08;只读数据区&#xff08;代码区&#xff1f;在linux中又叫文本段.text&#xff09;、读写数据区.data&#xff09;、未初始…

POJ 1149 最大流建图 PIGS

题意&#xff1a; 给出猪圈个数 m 和买家人数 n 然后给出m个猪圈的猪的头数.. 接下来 n 行.. 给出mm a1 a2 .. a(mm) k 例如 2 1 5 3 表示第i1个用户 有mm(2) 个猪圈的钥匙 就是有第 a1(1) 个和第 a2(5) 个猪圈的钥匙..还想要买得k头猪.. 问最多能够卖出多少头.. 思路&#xff…

【编译打包】tengine 1.5.2

tengine 官方没有提供rpm包&#xff0c;应网友要求&#xff0c;本文继续提供SRPM 包去掉了不相关的模块&#xff0c;支持平台为 rhel6 系列&#xff0c;适用于Web&#xff0c;LB&#xff0c;cache等场合。编译参数如下./configure \--prefix%{_sysconfdir}/nginx \--sbin-path%…

ARM通识——ARM的7种基本工作模式、37个通用寄存器

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、ARM采用32位架构 ARM约定一个Byte是8 bits&#xff0c;一个Halfword是16 bits (2 byte)&#xff0c;一个Word是32 bits (4 byte)。 大部分ARM core 提供ARM 指令集&#xff08;32 bit&#xff0…

软件测试工程师核心竞争力(转)

说明&#xff1a;总结整理来源于网络&#xff0c;并非独立原创 1、传统测试工程师应具备的核心竞争力1.1 测试策略设计能力测试策略设计能力是指&#xff1a;对于各种不同的被测软件&#xff0c;能够快速准确地理解需求&#xff0c;并在有限的时间和资源下&#xff0c;明确测试…

以NFS方式挂载rootfs的设置方法

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 更多详细内容&#xff0c;见Linux中NFS服务器的配置(/etc/export)_天糊土的博客-CSDN博客 网络文件系统&#xff08;NFS&#xff0c;network file system&#xff09;&#xff0c;是一种网络通讯协…

cocos2dx xcode5 创建项目

我的开发环境MacBook Pro OS X 10.9.1&#xff0c;Xcode5。 下载cocos2dx并解压&#xff0c;我使用的版本是2.2.1&#xff0c;3.0beta版本还没出来。 终端cd到cocos2d-x-2.2.1/tools/project-creator&#xff0c;我的全路径是/Users/HanHongmin/Documents/cocos2d-x-2.2.1/too…

poj 3660(floyd 变形)

题意&#xff1a; 有N头牛&#xff0c;每头牛都会有比他强的或者弱的牛&#xff0c;按照牛的强弱排序&#xff0c;问有几头牛的位置是确定的。 5 5&#xff08;n,m&#xff09; 4 3 4 2 3 2 1 2 2 5则4>3>2>5 && 1>2>5故只有2,5是确定的。 1 #include &…

分析根文件系统中的/linuxrc文件(附带busybox的介绍)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 init进程的详解_天糊土的博客-CSDN博客_init进程 busybox详解_linuxarmsummary的博客-CSDN博客 前言 因为uboot给内核传参的bootargs中有“init/linuxrc”这个项目&#xff0c;而由前面的…

Wisconsin Squares [USACO]

这个也不记得了&#xff0c;反正不难 /* ID: zhangyc1 LANG: C TASK: wissqu */ #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> using namespace std;char arrMatrix[4][5]; bool arrNewCow[4][…

CentOS Linux搭建SVN Server配置详解

PS&#xff1a;今天给开发的同事搭建一个公网的SVN Server&#xff0c;google一下&#xff0c;发现下面这篇最详细&#xff0c;就记录下来&#xff0c;重新排版一下。顺便根据自己的使用经验&#xff0c;补充了几个细节和总结。本文配置是基于CentOS 5.x的&#xff0c;但一样适…

bic,orr——设置某些位为0或者1

转载于http://blog.chinaunix.net/uid-28458801-id-4083986.html 一、bic &#xff08;1&#xff09;格式&#xff1a;BIC {条件} {S} 目的寄存器&#xff0c;操作数1&#xff0c;操作数2&#xff1b; &#xff08;2&#xff09;BIC指令用于清除操作数1的某些位&#xff0…