Как создать каталог и подкаталог, если он не существует в библиотеке документов sharepoint
У меня есть пользовательский ввод как D:\Test1\Test2\Test3\Test4\a\b\c\d\file.jpg
В соответствии с пользовательским вводом мне нужно проверить, существуют ли папка и подпапка в библиотеке документов.
т.е.
DocLib>>Test1>>Test2.... я хочу скопировать структуру папок в библиотеке документов, если она существует, чем непосредственно считывать и сохранять файл, либо создавать каталог, а затем сохранять подкаталог и файл уровня wherin.
Может ли кто-нибудь помочь мне понять, как я могу пойти с этим? Я пытался с созданием файлов в локальной системе на жестком диске
static void CopyFolder(string sourceFolder, string destFolder)
{
if (!Directory.Exists(sourceFolder))
Directory.CreateDirectory(destFolder);
string[] files = Directory.GetFiles(sourceFolder);
foreach (string file in files)
{
string name = Path.GetFileName(file);
string dest = Path.Combine(destFolder, name);
File.Copy(file, dest);
}
//check folder in the source destination
string[] folders = Directory.GetDirectories(sourceFolder);
foreach (string folder in folders)
{
string name = Path.GetFileName(folder);
string dest = Path.Combine(destFolder, name);
System.IO.Directory.CreateDirectory(dest);
CopyFolder(folder, dest);
}
}
Не знаю, как проверить, существует ли каталог и чем проверить подкаталог в sharepoint. т.е. добавить файл, сохранив указанную структуру папок. Пожалуйста, помогите
1 ответ
Для этого вам нужно создать структуру дерева по одному: вот краткий код того, как это можно сделать на корневом сайте с папкой UserDocument в качестве корневой:
// This will contain all information about the path
DirectoryInfo infoDir = new DirectoryInfo(@"C:\Users\Administrator\Pictures2\WallPaperHD - 078.jpg");
// Root folder passed => Default in SharePoint
if (infoDir.Parent != null)
{
// All folders are stored here
List<string> folders = new List<string>();
// Set current folder to parent
DirectoryInfo currentDir = infoDir.Parent;
do
{
// Add its name to array
folders.Add(currentDir.Name);
// Set parent of current as current if available
if (currentDir.Parent != null)
currentDir = currentDir.Parent;
}
while (currentDir.Parent != null);
// Add SP structure)
using (SPSite site = new SPSite("http://testsite.dev"))
{
SPWeb web = site.RootWeb;
// Get doc library
SPList documentLibrary = web.GetList("/UserDocuments");
// If library root exists
if (documentLibrary != null)
{
string folderUrl = "/UserDocuments/";
for (int i = folders.Count - 1; i >= 0; i--)
{
string folder = folders[i];
SPFolder newFolder = site.RootWeb.GetFolder(folderUrl + folder);
if (!newFolder.Exists)
{
site.RootWeb.Folders.Add(folderUrl + folder);
// Save changes
site.RootWeb.Update();
folderUrl += folder + "/";
}
}
}
}
}
Это создаст ту же структуру папок на стороне SharePoint, которая была указана в пути, пройденном пользователем.
После этого все, что вам нужно, это сохранить файл в указанной папке.
Надеюсь, поможет,
Эндрю