Получить файлы из папки _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.