从SharePoint中的_layouts文件夹中获取文件

car*_*ruw 5 c# sharepoint spweb

我正在开发一个项目,我将docx文件添加到Visual Studio中的Layout文件夹中,然后使用这些ducment文件创建内容类型.

问题是我无法以编程方式获取文档文件.使用Web浏览器我可以获取文件但不使用web.GetFolder();. 激活功能时,代码在功能接收器中运行.

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

SPFolder docTempFolder = web.GetFolder("_LAYOUTS/Projekt/DocumentTemplates");
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个零文件的集合.

我究竟做错了什么?

谢谢你的帮助.

Den*_*s G 7

SPFolder用于从SharePoint文档库/列表中获取对象.您无法通过尝试将它们转换为文件系统(14个配置单元)来访问它们SPFolder.此外,您无法使用,SPWeb.GetFolder因为文件远离您的网络.它们在你的硬盘上.

你可以通过使用获得14个蜂巢GetGenericSetupPath,所以这样的东西可以工作:

var path = SPUtility.GetGenericSetupPath(@"TEMPLATE\LAYOUTS\Projekt\DocumentTemplates");
Run Code Online (Sandbox Code Playgroud)

您现在可以使用常规流读取器System.IO.File等访问此路径.


编辑:对于SharePoint 2013及更高版本,上述方法已过时,因为在较新的SharePoint版本中,对_layouts文件夹的引用始终在路径中包含SharePoint版本(例如,/_layouts/15对于SharePoint 2013 /_layouts/14for SharePoint 2010).

新方法是SPUtility.GetVersionedGenericSetupPath.SharePoint 2010 中不存在该方法.