我目前正在开发一个项目,我将docx文件添加到Visual Studio中的Layout文件夹中,然后使用这些文件创建内容类型。
问题是我无法以编程方式获取文档文件。使用Web浏览器我可以获取文件但不使用web.GetFolder();.激活某个功能时,代码在功能接收器中运行。
SPSite site = properties.Feature.Parent as SPSite;
SPWeb web = site.RootWeb;
SPFolder docTempFolder = web.GetFolder("_LAYOUTS/Projekt/DocumentTemplates");
这段代码给了我一个零文件的集合。
我做错了什么?
感谢您的帮助。
答案 0 :(得分:7)
SPFolder
用于从SharePoint文档库/列表中获取对象。您无法通过尝试将其转换为SPFolder
来访问文件系统(14个配置单元)中的文件。此外,您无法使用SPWeb.GetFolder
,因为文件远离您的网络。它们在你的硬盘上。
你可以使用GetGenericSetupPath
获得14个配置单元,所以这样的东西可以工作:
var path = SPUtility.GetGenericSetupPath(@"TEMPLATE\LAYOUTS\Projekt\DocumentTemplates");
您现在可以使用常规流阅读器System.IO.File
等访问此路径
编辑:对于SharePoint 2013及更高版本,上述方法已过时,因为在较新的SharePoint版本中,对_layouts
文件夹的引用始终在路径中包含SharePoint版本(例如{{1}适用于SharePoint 2010的SharePoint 2013 /_layouts/15
。
新方法是SPUtility.GetVersionedGenericSetupPath
。该方法在SharePoint 2010中不存在。