Как вернуть документ из библиотеки документов Sharepoint пользователю? - PullRequest
2 голосов
/ 19 апреля 2011

Я получаю список документов из библиотеки Sharepoint. Допустим, моя задача - получить самый первый документ в этом списке для пользователя, чтобы он мог открыть файл docx. Как мне это сделать?

Еще одним осложнением является то, что сервер sharepoint расположен в другом домене. Веб-проект, над которым я работаю, предоставит клиенту документы, но не предоставит прямой доступ к серверу 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 ]

3 голосов
/ 19 апреля 2011

Вы можете создать элемент «A» на основе результата этого запроса, чтобы пользователь мог просто щелкнуть ссылку с полным путем к элементу (примерно так отображаются обычные списки SharePoint).

1 голос
/ 26 апреля 2011

Краткое содержание решения выглядит следующим образом. При создании тегов привязки включите информацию из поля 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
            };
        }
...