2012-06-19 57 views
5

我目前正在開發一個項目,將docx文件添加到Visual Studio中的Layout文件夾,然後使用這些文件創建內容類型。從SharePoint中的_layouts文件夾獲取文件

問題是我無法以編程方式獲取文檔文件。使用Web瀏覽器,我可以獲取文件,但不使用web.GetFolder();.當功能被激活時,代碼在Feature Receiver中運行。

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

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

此代碼給我一個零文件的集合。

我在做什麼錯?

感謝您的幫助。

+0

可能重複的[以編程方式獲取到12 Hive的目錄路徑](http://stackoverflow.com/questions/943933/get-directory-path-to-12-hive - 編程) – Goyuix

回答

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版本在路徑中(例如/_layouts/15 for SharePoint 2013 /_layouts/14 for SharePoint 2010.

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

+1

我知道這是舊的,但人們會在谷歌上找到它。這在SP2013中已經過時。 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.getgenericsetuppath.aspx – trgraglia

+0

你是對的。我添加了對帖子的修改。 –

+0

固體。偉大的更新! – trgraglia

相關問題