CSOMAuthentication Manager

问题描述 投票:0回答:0

填充身份验证管理器返回一个有效的上下文,并且根文件夹已经存在,以下工作:

using Microsoft.SharePoint.Client; using System; using System.Collections.Generic; using System.Linq; using AuthenticationManager = SharepointOrderContractExtractor.Clients.AuthenticationManager; namespace SharePointOrderContractExtractor.Clients { public class FolderManager { private readonly AuthenticationManager _authenticationManager; public FolderManager( AuthenticationManager sharepointAuthenticationManager ) { _authenticationManager = sharepointAuthenticationManager; } internal Folder EnsureAndGetTargetFolder(string folderPath) { using ClientContext context = _authenticationManager.GetContext(); List<string> folderNames = folderPath.Split("/").ToList(); List documents = context.Web.Lists.GetByTitle(folderNames[0]); folderNames.RemoveAt(0); return EnsureAndGetTargetFolder(context, documents, folderNames); } private Folder EnsureAndGetTargetFolder(ClientContext context, List list, List<string> folderPath) { Folder returnFolder = list.RootFolder; return (folderPath != null && folderPath.Count > 0) ? EnsureAndGetTargetSubfolder(context, list, folderPath) : returnFolder; } private Folder EnsureAndGetTargetSubfolder(ClientContext context, List list, List<string> folderPath) { Web web = context.Web; Folder currentFolder = list.RootFolder; context.Load(web, t => t.Url); context.Load(currentFolder); context.ExecuteQuery(); foreach (string folderPointer in folderPath) { currentFolder = FindOrCreateFolder(context, list, currentFolder, folderPointer); } return currentFolder; } private Folder FindOrCreateFolder(ClientContext context, List list, Folder currentFolder, string folderPointer) { FolderCollection folders = currentFolder.Folders; context.Load(folders); context.ExecuteQuery(); foreach (Folder existingFolder in folders) { if (existingFolder.Name.Equals(folderPointer, StringComparison.InvariantCultureIgnoreCase)) { return existingFolder; } } return CreateFolder(context, list, currentFolder, folderPointer); } private Folder CreateFolder(ClientContext context, List list, Folder currentFolder, string folderPointer) { ListItemCreationInformation itemCreationInfo = new ListItemCreationInformation { UnderlyingObjectType = FileSystemObjectType.Folder, LeafName = folderPointer, FolderUrl = currentFolder.ServerRelativeUrl }; ListItem folderItemCreated = list.AddItem(itemCreationInfo); folderItemCreated.Update(); context.Load(folderItemCreated, f => f.Folder); context.ExecuteQuery(); return folderItemCreated.Folder; } } }

thinks brian,完美工作!

c# sharepoint csom shared-directory create-directory
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.