c# - CSOM 调用 GetImagePreviewUrl 返回 Object 但值为空
问题描述
我正在尝试使用 GetImagePreviewUrl 的 CSOM 调用,但我相信我可能没有正确使用它。
虽然我可以用 C# 编写代码,但我不是 SharePoint 用户或管理员,所以这可能是我的问题的一部分。我对我正在查询的 SharePoint 中的网站拥有完全访问权限,我可以毫无问题地调用 ClientContext 并返回 Microsoft.SharePoint.Client.File。我正在使用相同的代码来获取系统中其他位置的列表和文件信息。从这个文件中可以看出,我应该能够调用 GetImagePreviewUrl 并返回预览图像。该调用将返回一个 Microsoft.SharePoint.Client.ClientRequest 但值始终为空(下图)。为简洁起见,以下是我的代码行。
var ctx = new ClientContext("http://mysharepointResource/andSite");
ctx.ExecutingWebRequest += appendBearerToken; // just adding headers here
ctx.RequestTimeout = Timeout.Infinite;
Microsoft.Sharepoint.Client.File file = ctx.Web.GetFileByUrl(value);
ctx.Load(file);
await ctx.ExecuteQueryAsync();
var previewUri = file.GetImagePreviewUri(300,300, "docLibGrid");
我在想这里可能有两件事可能是错误的,首先我可能为第三个参数使用了错误的值。我的示例代码使用“docLibGrid”字符串,因为我从这里看到的示例中得到了它。 但也许这应该像网页标题内容类型值一样。它应该是像预览图像一样的“图像/jpeg”值,还是应该代表原始文件的内容类型?我尝试了几种不同的标头类型,它们返回相同的 NULL 值。
我的第二个想法可能是我在 SharePoint 网站本身上设置了错误,因此我在返回的 ClientResult 的 Value 字段中收到了一个 NULL。我是否需要要求管理员打开某些东西,或者我需要验证预览图像是否存在?我去过 SharePoint 网站并按照几种方法查看预览图像,所以我认为不是这样。
我感谢任何帮助或指示,谢谢。
解决方案
列表项EncodedAbsThumbnailUrl属性存储图像缩略图 url,以下示例显示如何获取它:
using (var ctx = new ClientContext(webUri))
{
var list = ctx.Web.Lists.GetByTitle(pictureLibraryTitle);
var item = list.GetItemById(itemId);
ctx.Load(item, i => i["EncodedAbsThumbnailUrl"]);
ctx.ExecuteQuery();
Console.WriteLine(item["EncodedAbsThumbnailUrl"]);
}
推荐阅读
- ios - 如何区分 View 中的代码和 ViewController 中的代码?
- html - 当我尝试消除内联块 div 之间的空间时,字体大小不起作用
- matlab - 编写一个函数,将 `n` 作为输入并返回矩阵 C,如果 i/j<2 则 Cij= 0 ,否则在 MATLAB 中 Cij =ij^2
- pyqt5 - 类、方法和模块的 PyQt5 文档在哪里?
- sonos - Sonos:创建播放列表后自动结束的播放会话。没有重复
- sql - 多条记录共享相同唯一 ID 的索引类型是什么?
- php - 如何让 Symfony 4 依赖注入与两个不同的用例场景一起工作?
- android - WorkManager 作业未重新安排或在一段时间后未触发
- python - 如何使用 python networkx 提取具有固定节点数的随机子图?
- bash - 手表和厕所没有产生任何结果