Получить файлы из папки _layouts в SharePoint

В настоящее время я работаю над проектом, в котором я добавляю docx-файлы в папку Layout в Visual Studio, а затем использую эти файлы ducment для создания типов контента.

Проблема в том, что я не могу получить файлы документов программно. Используя веб-браузер, я могу получить файлы, но не используя web.GetFolder();. Код выполняется в Приемнике функций, когда функция активирована.

SPSite site = properties.Feature.Parent as SPSite;
SPWeb web = site.RootWeb;

SPFolder docTempFolder = web.GetFolder("_LAYOUTS/Projekt/DocumentTemplates");

Этот код дает мне коллекцию с нулевыми файлами.

Что я делаю неправильно?

Спасибо за помощь.

1 ответ

Решение

SPFolder предназначен для получения объектов из библиотек / списков документов SharePoint. Вы не можете получить доступ к файлам в вашей файловой системе (куст 14), пытаясь преобразовать их в SPFolder, Также вы не можете использовать SPWeb.GetFolder так как файлы находятся рядом с вашей сетью. Они на вашем жестком диске.

Вы можете получить улей 14, используя GetGenericSetupPath так что-то вроде этого будет работать:

var path = SPUtility.GetGenericSetupPath(@"TEMPLATE\LAYOUTS\Projekt\DocumentTemplates");

Этот путь вы теперь можете получить доступ с обычными потоковыми ридерами, System.IO.File и т.п.


РЕДАКТИРОВАТЬ: для SharePoint 2013 и выше упомянутый метод устарел, так как в более новых версиях SharePoint ссылки на _layouts папка всегда содержит версию SharePoint в пути (например, /_layouts/15 для SharePoint 2013 /_layouts/14 для SharePoint 2010.

Новый метод SPUtility.GetVersionedGenericSetupPath, Этот метод не существует в SharePoint 2010.

Другие вопросы по тегам