用代码实现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;…

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…

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…

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…

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

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

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

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

CentOS Linux搭建SVN Server配置详解

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

405 Method Not Allowed

当jquery easyui的datagrid插件使用.json文件为数据源&#xff0c;通过非http协议访问【就是直接拖进浏览器查看效果】&#xff0c;能正常加载.json文件并且生成datagrid数据源。但是通过http协议访问示例代码时&#xff0c;无法加载json文件生成datagrid的数据源。 这个是由于…

Eclipse之ANT使用

Ant是Java平台下非常棒的批处理命令执行程序&#xff0c;能非常方便地自动完成编译&#xff0c;测试&#xff0c;打包&#xff0c;部署等等一系列任务&#xff0c;大大提高开发效率。如果你现在还没有开始使用Ant&#xff0c;那就要赶快开始学习使用&#xff0c;使自己的开发水…

idea修改maven项目版本号

1 先安装插件 2 控制台执行命令 mvn build-helper:parse-version versions:set -DnewVersion1.1-SNAPSHOT versions:commit 1.1-SNAPSHOT 为你要修改的版本号 技术交流群&#xff1a; 816227112 有时候命令执行完看不到改变&#xff0c;需要刷新下。 转载于:https://www.cnblo…

几个国外开源CMS系统比较

CMS是Content Management System的缩写&#xff0c;意为"内容管理系统"。上一下度娘或者放一下Google&#xff0c;全球的CMS系统&#xff0c;不下千个&#xff0c;开源的不下百个&#xff0c;如果只是普通用户&#xff0c;很难有时间和精力去比较那么多的系统优劣。不…

javascript函数,值得参考!

2019独角兽企业重金招聘Python工程师标准>>> javascript函数一共可分为五类&#xff1a;   常规函数   数组函数   日期函数   数学函数   字符串函数   1.常规函数   javascript常规函数包括以下9个函数&#xff1a;   (1)alert函数&#xff1a;显…

时钟系统——S5PV210的时钟系统的理论及操作

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 s5pv210——初始化时钟 - biaohc - 博客园 用户手册 一、SoC时钟系统 1、时钟的含义与作用 时钟是同步工作系统的同步节拍。 SoC内部有很多器件&#xff0c;比如CPU、串口、DRAM控制器、…

Oracle 协议适配器错误

1.首先确认你的 OracleDBConsoleORACLE&#xff0c;OracleOraDb11g_home1TNSListener&#xff0c;OracleServiceORACLE 这三个服务是否已经正常的开启。 2. 确认你的listener 的端口是否被占用&#xff0c; 在命令行执行&#xff1a;netstat -aon|findstr "1521" &am…

串口通信——串口通信的基础概念

以下内容源于朱友鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 同步通信与异步通信区别_wind19的博客-CSDN博客 SPI、I2C、UART&#xff08;即串口&#xff09;三种串行总线详解_天糊土的博客-CSDN博客_串口总线 一、电子通信相关的概念 1、同步通信和…

MS CRM 2011 RC中的新特性(9)—全新的工作流 脚本设计模式

MS Dynamics CRM 2011中&#xff0c;在流程处理方面&#xff0c;除了以往版本中具有的工作流之外&#xff0c;又加入了新的内容——脚本Dialog。脚本Dialog&#xff0c;是同步的、需要用户输入内容的流程。当启动了脚本后&#xff0c;系统会弹出向导风格的对话框&#xff0c;用…

串口通信——S5PV210串口通信接口详解

以下内容源于 朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 s5pv210——串口通信 - biaohc - 博客园 一、S5PV210的串口控制器 S5PV210的串口控制器的相关内容&#xff0c;在用户手册的section8.1章节。 &#xff08;1&#xff09;串口控制器包含…

串口通信——S5PV210串口通信的简单案例

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客&#xff1a;s5pv210——串口通信 - biaohc - 博客园 一、代码与测试 1、代码文件 完整的案例文件见链接。 &#xff08;1&#xff09;start.S文件 /* * 演示串口通信 */#define WTCON …

iOS学习系列 - 扩展机制category与associative

category与associative作为objective-c的扩展机制的两个特性&#xff0c;category即类型&#xff0c;可以通过它来扩展方法&#xff1b;associative&#xff0c;可以通过它来扩展属性&#xff1b;在iOS开发中&#xff0c;可能category比较常见&#xff0c;相对的associative&am…

Spring Boot JWT 快速入门

本章节讨论 jwt 在 spring boot 中的应用。意在快速入门 jwt。 java jdk1.8maven 3.2spring boot 2.0JSON Web Token&#xff08;JWT&#xff09; 他是一个用于 Web 身份验证的令牌。 1 JWT 概述 1.1 什么是JWT 直观的理解 JWT 就是一串字符串&#xff0c;如下&#xff08;来自…