Sharepoint 2010 - 我可以重新连接用户照片网址吗?

时间:2010-11-03 11:26:27

标签: sharepoint sharepoint-2010 photo user-profile

SharePoint 2010更好地利用了员工的照片。在我的公司,员工照片由秘书管理,被视为人力资源数据的一部分。我们有一个方便的网络服务,可以根据登录信息调整员工照片的大小并返回:

http://services.domain.com/photo.ashx?login=kobi&width=64&height=64

将所有SharePoint照片“重新连接”到此服务的好方法是什么?我想避免将所有照片上传到/my网站,或更新Active Directory - 我正在寻找全代码解决方案。

我可以重写显示照片的部分吗?如果没有,可以重写所有用户的照片网址吗?

看起来SharePoint正在使用ProfilePropertyImage中的Microsoft.SharePoint.Portal.dll - 我真正想做的是让SharePoint使用我的控件。这太乐观了吗?

2 个答案:

答案 0 :(得分:2)

有一个小的STSADM脚本使用自定义URL和用户ID更改用户图像URL。它是为Sharepoint 2007制作的,但也许这对SP2010来说是一个简单的改变?实际上它甚至看起来可以从它做一个小的控制台应用程序。

也许您对用户图像的自定义HTTP处理程序感兴趣(同样是Sharepoint 2007)?

对于Sharepoint 2010,您可能需要查看用户配置文件同步服务,也许您可​​以以某种方式将特殊图像URL附加到配置文件?

答案 1 :(得分:1)

如果您将UserProfiles与UserProfileManager一起使用,则可以在导入配置文件时手动设置此属性。您可以从任何系统设置导入,然后在创建用户配置文件时,只需将PictureUrl字段设置为您的自定义URL。您可以使用来自简单控制台应用程序的批处理作业来控制导入,而不是使用内置的配置文件同步。您可以从.exe运行此代码,作为来自各种系统的夜间配置文件更新的一部分。

SPServiceContext serviceContext = SPServiceContext.GetContext(topSite);
UserProfileManager profileMgr = ProfileLoader.GetProfileLoader(serviceContext).GetUserProfileManager();
UserProfile curUser = null;
if (profileMgr.UserExists(userId))
{
    curUser = profileMgr.GetUserProfile(userId);
} 
else
{
    curUser = profileMgr.CreateUserProfile(userId);
}
//Set lots of other properties here
curUser[PropertyConstants.PictureUrl].Value = "http://services.domain.com/photo.ashx?login=" + userId + "&width=64&height=64";
curUser.Commit();

这会将PicureUrl属性设置为您的自定义网址,而您无需上传所有照片。