我需要創建一個簡單的程序,它經過在SharePoint用戶給定的目錄,發現所有這些都超過1月份的文件夾,然後將它們複製到一些本地硬盤驅動器。 也許它會創建一些日誌的方式,此文件夾被移到.......從SharePoint複製文件夾的修改日期
感謝 的Jakub
我需要創建一個簡單的程序,它經過在SharePoint用戶給定的目錄,發現所有這些都超過1月份的文件夾,然後將它們複製到一些本地硬盤驅動器。 也許它會創建一些日誌的方式,此文件夾被移到.......從SharePoint複製文件夾的修改日期
感謝 的Jakub
我寫的,你可以用它來了解它是如何做此示例代碼,或者你可以使用它,因爲它似乎工作正常。
class Program
{
static void Main(string[] args)
{
MoveFolders("your_web_url", "your_doclib_url");
}
public static void MoveFolders(string webUrl, string listUrl)
{
using (SPSite site = new SPSite(webUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList targetList = web.GetList(web.Url + "/" + listUrl);
MoveFolders(targetList.RootFolder, @"C:\test"); // path to your local storage folder
}
}
}
public static void MoveFolders(SPFolder targetFolder, string rootLocalPath)
{
string currentPath = Path.Combine(rootLocalPath, targetFolder.Name);
if (!Directory.Exists(currentPath))
Directory.CreateDirectory(currentPath);
DateTime lastModified = (DateTime)targetFolder.Properties["vti_timelastmodified"]; //folder last modified date
if (lastModified < DateTime.Today.AddMonths(-1))
SaveFolderLocal(targetFolder, currentPath);
foreach (SPFolder folder in targetFolder.SubFolders)
{
MoveFolders(folder, currentPath);
}
}
public static void SaveFolderLocal(SPFolder folder, string localStoragePath)
{
foreach (SPFile file in folder.Files)
{
var contents = file.OpenBinary();
using (FileStream fileStream = new FileStream(Path.Combine(localStoragePath, file.Name), FileMode.Create))
{
fileStream.Write(contents, 0, contents.Length);
}
}
}
}
此代碼將在本地保存您的doclib文件夾結構,其中包含修改超過一個月前任何文件夾的內容。只需要小心使用遞歸MoveFolders方法,因爲它可能會導致具有非常複雜的文件夾結構的庫的StackOverflowException。
謝謝你。對不起,在這個新手,但我不知道如何使它的工作方式,用戶點擊一個按鈕,它會爲他做的工作,如所述?另外,我不確定什麼是「your_web_url」和「your_doclib_url」。遺憾的是這樣一個新手,但我想不會是... – 2011-02-07 12:33:00
嗨,這是SharePoint 2007中,使用Windows authetication我沒有什麼:)我覺得來訪問SharePoint是沒有問題的,我需要找到舊的文件夾。我相信,複製它們是最簡單的部分,但如果你能幫助我完成這件事,我將不勝感激。 – 2011-02-07 10:59:38