如何将文档从Sharepoint文档库返回给用户?

时间:2011-04-18 22:41:34

标签: c# asp.net-mvc sharepoint sharepoint-list

我正在从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];

2 个答案:

答案 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
            };
        }