SharePoint에서 Document Library 문서 라이브러리 데이터를 로컬로 백업
5494 단어 SharePoint
#region
///
/// SiteUrL Shared Documents
///
/// SiteUrl
///
public void CreateDirectoryTree(string siteUrl, string destinationPath)
{
using (SPSite mySite = new SPSite(siteUrl))
{
using (SPWeb myWeb = mySite.RootWeb)
{
string tempDirectory = destinationPath;
SPList myList = myWeb.Lists["Documents"];
//
SPFolder myFolder = myList.RootFolder;
DirectoryInfo myDirectory = new DirectoryInfo(tempDirectory);
if (myDirectory.Exists)
{
tempDirectory += "\\" + "Web";
if (!Directory.Exists(tempDirectory))
{
myDirectory.CreateSubdirectory("Web");
}
tempDirectory += "\\" + "Library";
if (!Directory.Exists(tempDirectory))
{
Directory.CreateDirectory(tempDirectory);
}
tempDirectory += "\\" + myFolder.Name.ToString();
if (!Directory.Exists(tempDirectory))
{
Directory.CreateDirectory(tempDirectory);
}
CreateSubDirectory(myFolder, tempDirectory);
}
// Console.WriteLine(myFolder.Name);
}
}
}
#endregion
2. 먼저 문서 라이브러리 아래의 1층의 하위 폴더와 하위 파일을 훑어본다. 여기에Forms라는 숨겨진 파일을 필터한 다음에 모든 하위 폴더와 하위 파일을 반복해서 훑어본다. 또한 큰 파일 백업의 상황을 고려해야 한다(폴더와 파일의 존재 여부를 판정하고 처리했다).
///
///
///
/// ,
///
public void CreateSubDirectory(SPFolder myFolder, string destinationPath)
{
SPList myList = myFolder.DocumentLibrary;
int myListLength = myList.Items.Count;
SPListItem myListItem = myList.Items[0];
string tempPath = destinationPath;
SPFolderCollection myFolderCollection = myFolder.SubFolders;
SPFileCollection myFileCollection = myFolder.Files;
int subFolderLength = myFolderCollection.Count;
int subFileLength = myFileCollection.Count;
if (subFolderLength > 0 || subFileLength > 0)
{
if (subFolderLength > 0)
{
for (int i = 0; i < subFolderLength; i++)
{
if (myFolderCollection[i].Name != "Forms")
{
tempPath += "\\" + myFolderCollection[i].Name;
if (!Directory.Exists(tempPath))
{
Directory.CreateDirectory(tempPath);
}
CreateSubDirectory(myFolderCollection[i], tempPath);
}
}
}
foreach (SPFile item in myFileCollection)
{
DirectoryInfo myDirectoryInfo = new DirectoryInfo(destinationPath);
string tempFilePath = destinationPath;
tempFilePath += "\\" + item.Name;
if (File.Exists(tempFilePath))
{
File.Delete(tempFilePath);
}
using (FileStream myFileStream = new FileStream(tempFilePath, FileMode.Create, FileAccess.Write))
{
const int bufferSize = 4 * 1024 * 1024;
//byte[] fileContentBuffer = new byte[bufferSize];
byte[] fileContent = item.OpenBinary();
int num = fileContent.Length / bufferSize;
int data = fileContent.Length % bufferSize;
int start = 0;
while (start < num)
{
myFileStream.Write(fileContent, start * bufferSize, bufferSize);
start++;
}
myFileStream.Write(fileContent, start * bufferSize, data);
}
for (int a = 0; a < myListLength; a++)
{
if (myList.Items[a].Name == item.Name)
{
myListItem = myList.Items[a];
break;
}
}
myListItem["Source Path"] = tempFilePath;
myListItem.Update();
tempFilePath = destinationPath;
}
}
}
3. 그리고 약간의 이상 처리가 필요합니다. 여기에 추가하지 않았습니다. 자신이 사용할 때 추가할 수 있습니다.이상은 순전히 개인이 SharePoint를 처음 독학하기 시작한 것으로 간단명료한 이해입니다. 토론과 지도를 환영합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Excel에서 사이트의 목록 목록을 손쉽게 만들기Excel의 OData 연동 기능을 사용하면 비 프로그래밍 방식으로 SharePoint Online 목록을 쉽게 만들 수 있습니다. ※ SharePoint Server 2013, 2016에서도 갈 수 있습니다. 먼저...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.