SharePoint伺服器端物件遷移資料夾

霖雨001發表於2017-05-24

  最近有個需求,寫個定時遷移資料夾的小程式,因為計時器任務比較繁瑣,所以選擇了控制檯程式。然後,用windows的計劃任務執行,也許,會有廣大朋友需要類似的功能,簡單的分享一下程式碼邏輯,功能非常簡單,希望大家不要見笑。
  //提升許可權程式碼

SPSecurity.RunWithElevatedPrivileges(delegate()
{
  //提升許可權的核心程式碼
});

  //建立網站集和網站物件

using (SPSite site = new SPSite(siteUrl))
{
  using (SPWeb web = site.OpenWeb(webUrl))
  {
  }
}

  //允許非安全更新,否則客戶端呼叫可能回報不安全更新操作的錯誤

web.AllowUnsafeUpdates = true;
web.AllowUnsafeUpdates = false;

  //獲取文件庫和資料夾 

SPList sDoclib = web.Lists[sourceDoclib];
SPList tDoclib = web.Lists[transferDoclib];
SPListItemCollection items = sDoclib.Folders;

  //遍歷資料夾,並遷移到目標文件庫 

foreach (SPListItem item in items)
{
  SPFileCollection files = item.Folder.Files;
  item.Folder.MoveTo(web.Url + "/" + tDoclib.RootFolder.Url.ToString() + "/" + item.Folder.Name);
}

  特別要說的是MoveTo的方法,如果要保留源文件庫的內容,只是複製也可以用CopyTo。這兩個方法既可以對SPFolder使用,也可以對SPFile使用,引數是目標的地址。記住,引數一定是地址,比如原始檔是http://url/sourceLib/file.txt,目標檔案就需要是http://url/transferLib/file.txt。如果是資料夾,目標地址就可以是http://url/transferFolder就可以了。

  整個功能很簡單,其間注意事項有:

  • Net Framework的版本要和SharePoint版本相對應
  • 控制檯程式要以64位程式為目標平臺
  • 提升許可權進行操作,以防止操作沒有許可權
  • 允許不安全更新,更新完畢記得關閉這個設定
  • MoveTo和CopyTo方法的使用

  當然,除此之外,必要的異常處理和日誌記錄也是必須的,大家按照需求新增相關功能就可以了。我這裡就簡單的把日誌記錄在記事本中,方便檢視了。

using System.IO;

  //寫入日誌程式碼,日誌路徑和生成的.exe檔案在同一位置

StreamWriter sw = new StreamWriter("log.txt");
sw.WriteLine("日誌內容");
sw.Flush();
sw.Close();

  以上便是整個功能的詳細介紹,希望能夠為有需要的人帶來一定的幫助。當然,如果高手飄過歡迎指點,不喜勿噴,多謝!


相關文章