我正在从Sharepoint库中检索文档列表。假设我的任务是将该列表中的第一个文档检索给用户,以便他可以打开docx文件。我该怎么做呢?
另一个复杂因素是sharepoint服务器位于另一个域上。我正在处理的Web项目将向客户展示文档,但不会公开对sharepoint服务器的直接访问。
ClientContext clientContext = new ClientContext(URL);
List list = clientContext.Web.Lists.GetByTitle("My Documents");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = XML;
ListItemCollection listItems = list.GetItems(camlQuery);
clientContext.Load(
listItems,
items => items.Include(item => item["FileRef"]));
clientContext.ExecuteQuery();
// return this file to the user
// listItems[0];
答案 0 :(得分:3)
您可以根据此查询的结果创建“A”元素,以便用户只需单击包含该项目完整路径的链接(这大约是常规SharePoint列表的呈现方式)。
答案 1 :(得分:1)
解决方案的执行摘要如下。生成锚标记时,请包含文档应具有值的FileRef字段中的信息。这是您稍后将使用的参考字段。
您将在致电
时使用此参考 FileInformation fileInformation = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, reference);
Stream stream = fileInformation.Stream;
if (stream != null)
{
documentName = Path.GetFileName(reference);
return new FileStreamResult(stream, "unknown")
{
FileDownloadName = documentName
};
}