SharePoint REST 显示当前用户个人资料图片
SharePoint REST show current user profile picture
当通过 REST 从当前用户的个人资料中获取 URL 时,图像标签在更新 src 时无法显示:
<img id="escMyPic" src="" alt="" />
<script type="text/javascript">
$.ajax({
url: strURL + "/_api/sp.userprofiles.peoplemanager/getmyproperties",
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: MyPictureSucceeded,
error: MyPictureFailed
});
function MyPictureSucceeded(data) {
if(data.d.PictureUrl != null) {
$('#escMyPic').attr('src', data.d.PictureUrl);
}
}
function MyPictureFailed() {
alert('Error: Unexpected error loading profile picture.');
}
</script>
return url 在 SharePoint Online 中看起来像这样:
https://tenant-my.sharepoint.com:443/User%20Photos/Profile%20Pictures/email_address_MThumb.jpg?t=63601764394
使用浏览器开发工具,您看到返回的 mime 类型不是 image/jpg,而是 text/plain。我已经删除了查询字符串参数,甚至将硬编码 URL 放在图像标签 src 中,但它就是不显示。开发工具中的响应主体也是空白的。它似乎在显示之前进行了重定向和身份验证。
将硬编码的URL放在浏览器地址栏时,图片显示正常,开发工具响应头显示图片为URL的内容,MIME类型是 image/jpg.
如何通过 REST 调用显示个人资料图片?
除了 returns PersonalUrl
属性 的 /_api/sp.userprofiles.peoplemanager/getmyproperties
端点之外,还可以通过 _layouts/15/userphoto.aspx?size=<size>&accountname=<accountname>
页面请求用户个人资料图片,其中
size
- 可以设置为 S/M/L
代表 Small/Medium/Large
图片大小
accountname
- 用户账户名
例子
var url = getMyPictureUrl(_spPageContextInfo.webAbsoluteUrl,_spPageContextInfo.userLoginName,"M");
$('#escMyPic').attr('src', url);
哪里
function getMyPictureUrl(webUrl,accountName,size){
return webUrl + "/_layouts/15/userphoto.aspx?size=" + size + "&accountname=" + accountName;
}
当通过 REST 从当前用户的个人资料中获取 URL 时,图像标签在更新 src 时无法显示:
<img id="escMyPic" src="" alt="" />
<script type="text/javascript">
$.ajax({
url: strURL + "/_api/sp.userprofiles.peoplemanager/getmyproperties",
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: MyPictureSucceeded,
error: MyPictureFailed
});
function MyPictureSucceeded(data) {
if(data.d.PictureUrl != null) {
$('#escMyPic').attr('src', data.d.PictureUrl);
}
}
function MyPictureFailed() {
alert('Error: Unexpected error loading profile picture.');
}
</script>
return url 在 SharePoint Online 中看起来像这样: https://tenant-my.sharepoint.com:443/User%20Photos/Profile%20Pictures/email_address_MThumb.jpg?t=63601764394
使用浏览器开发工具,您看到返回的 mime 类型不是 image/jpg,而是 text/plain。我已经删除了查询字符串参数,甚至将硬编码 URL 放在图像标签 src 中,但它就是不显示。开发工具中的响应主体也是空白的。它似乎在显示之前进行了重定向和身份验证。
将硬编码的URL放在浏览器地址栏时,图片显示正常,开发工具响应头显示图片为URL的内容,MIME类型是 image/jpg.
如何通过 REST 调用显示个人资料图片?
除了 returns PersonalUrl
属性 的 /_api/sp.userprofiles.peoplemanager/getmyproperties
端点之外,还可以通过 _layouts/15/userphoto.aspx?size=<size>&accountname=<accountname>
页面请求用户个人资料图片,其中
size
- 可以设置为S/M/L
代表 Small/Medium/Large 图片大小accountname
- 用户账户名
例子
var url = getMyPictureUrl(_spPageContextInfo.webAbsoluteUrl,_spPageContextInfo.userLoginName,"M");
$('#escMyPic').attr('src', url);
哪里
function getMyPictureUrl(webUrl,accountName,size){
return webUrl + "/_layouts/15/userphoto.aspx?size=" + size + "&accountname=" + accountName;
}