递归上传文件和文件夹至SharePoint
生活随笔
收集整理的這篇文章主要介紹了
递归上传文件和文件夹至SharePoint
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果你使用SharePoint 2010的話,可以直接“上傳多個文件”。在彈出的對話框中可以直接往里拖放整個文件夾。如下圖所示:
如果是SharePoint 2007的話,可以通過“資源管理器”視圖,像在資源管理器里管理本地文件一樣,拖放文件夾。
下面介紹的方式是下策。當然下下策就是你手工一個一個的建文件夾上傳文件了。下策是你可以通過SharePoint對象模型或Web Services的方式編寫一個遞歸程序來實現從本地文件夾到SharePoint庫的上傳工作。這里我們演示的是通過對象模型上傳到一個SharePoint 2010站點。代碼對于SharePoint 2007站點也是可用的。唯一的區別就是32位和64位,相應的.NET Framework版本和Microsoft.SharePoint.dll版本。
Microsoft.SharePoint
引用Microsoft.SharePoint.dll以便訪問SharePoint對象模型。
上傳文檔至文檔庫
try {localPath = txtLocalPath.Text; //本地路徑sharePointSite = txtServerURL.Text; //SharePoint 網站 URL.documentLibraryName = txtLibrary.Text; // SharePoint文檔庫名稱.//獲取你的SharePoint網站對象.using (SPSite oSite = new SPSite(sharePointSite)){oWeb = oSite.OpenWeb();CreateDirectories(localPath, oWeb.Folders[documentLibraryName].SubFolders);} } catch (Exception ex) {MessageBox.Show("Error:" + ex.Message ); }CreateDirectories(string path,SPFolderCollection oFolderCollection)
CreateDirectories方法是一個遞歸方法,接收兩個參數。path參數指定本地計算機文件系統中的源位置;oFolderCollection參數指定目標文件夾集合。SPFolderCollection的用法參考這里。
?
private void CreateDirectories(string path, SPFolderCollection oFolderCollection) {//上傳多個文檔foreach (FileInfo oFI in new DirectoryInfo(path).GetFiles()){FileStream fileStream = File.OpenRead(oFI.FullName);SPFile spfile = oFolderCollection.Folder.Files.Add(oFI.Name, fileStream, true);spfile.Update();}//上傳多個文件夾foreach (DirectoryInfo oDI in new DirectoryInfo(path).GetDirectories()){string sFolderName = oDI.FullName.Split('\\')[oDI.FullName.Split('\\').Length - 1];SPFolder spNewFolder = oFolderCollection.Add(sFolderName);spNewFolder.Update();//遞歸調用以創建子文件夾CreateDirectories(oDI.FullName, spNewFolder.SubFolders);} }本地文件夾
SharePoint文檔庫
運行結果
限制
- 準備上傳的文件的大小 不能超過2GB
- 執行該代碼的用戶需要具備相應文檔庫的上傳權限
參考資料
Uploading Files and Folders Recursively to a SharePoint Site
總結
以上是生活随笔為你收集整理的递归上传文件和文件夹至SharePoint的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Virtual ListView效率对比
- 下一篇: 属性项目的定义(property)[ZT