Как создать каталог и подкаталог, если он не существует в библиотеке документов 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, которая была указана в пути, пройденном пользователем.

После этого все, что вам нужно, это сохранить файл в указанной папке.

Надеюсь, поможет,

Эндрю

Другие вопросы по тегам