public Folder Delete(string url, Guid libraryId, string folderPath) { Folder folder; try { using (var clientContext = new SPContext(url, credentials.Get(url))) { SP.List splist = clientContext.Web.Lists.GetById(libraryId); SP.Folder rootFolder = splist.RootFolder; clientContext.Load(rootFolder, f => f.ServerRelativeUrl); SP.Folder spfolder = clientContext.Web.GetFolderByServerRelativeUrl(folderPath); clientContext.Load(spfolder, f => f.Name, f => f.ServerRelativeUrl, f => f.ItemCount); clientContext.ExecuteQuery(); bool pathIsNotEmpty = !String.IsNullOrEmpty(spfolder.ServerRelativeUrl.Trim('/')); bool isARootFolder = rootFolder.ServerRelativeUrl.Trim('/').Equals(spfolder.ServerRelativeUrl.Trim('/')); bool hasParentFolder = pathIsNotEmpty && !isARootFolder; if (hasParentFolder && !IsHiddenFolder(spfolder.ServerRelativeUrl, rootFolder.ServerRelativeUrl)) { folder = new Folder(spfolder.Name, spfolder.ServerRelativeUrl, spfolder.ItemCount, libraryId); spfolder.DeleteObject(); clientContext.ExecuteQuery(); } else { throw new SPInternalException("Folder can not be removed."); } } } catch (SPInternalException) { throw; } catch (Exception ex) { string message = string.Format("An exception of type {0} occurred in the InternalApi.SPFolderService.Delete() method LibraryId: {1} ServerRelativeUrl: '{2}' in SPWebUrl: '{3}'. The exception message is: {4}", ex.GetType(), libraryId, folderPath, url, ex.Message); SPLog.RoleOperationUnavailable(ex, message); throw new SPInternalException(message, ex); } return(folder); }
private Folder MoveFld(Folder folder, string newUrl, bool delete = true) { var newFolder = CreateFolder(newUrl); if (delete) { folder.Folders.ToList().ForEach(r => MoveFolder(r.ServerRelativeUrl, newUrl)); folder.Files.ToList().ForEach(r => MoveFile(r.ServerRelativeUrl, newUrl)); folder.DeleteObject(); clientContext.ExecuteQuery(); } else { folder.Folders.ToList().ForEach(r => CopyFolder(r.ServerRelativeUrl, newUrl)); folder.Files.ToList().ForEach(r => CopyFile(r.ServerRelativeUrl, newUrl)); } return(newFolder); }
public bool DeleteFile(string fileName, string folderName) { bool result = false; string siteUrl = SLMConstant.Ecm.SiteUrl; //http://ecm/dept/public string sitePath = SLMConstant.Ecm.SitePath; ///dept/public/OBTDocument/ string domain = SLMConstant.Ecm.Domain; string username = SLMConstant.Ecm.Username; string password = SLMConstant.Ecm.Password; try { using (ToEcm.ClientContext clientContext = new ToEcm.ClientContext(siteUrl) { Credentials = new NetworkCredential(username, password, domain) }) { string serverRelativeUrlOfFile = sitePath + folderName + "/" + fileName; log.Info("Delete File Path " + serverRelativeUrlOfFile); ToEcm.Web web = clientContext.Web; clientContext.Load(web); ToEcm.File file = web.GetFileByServerRelativeUrl(serverRelativeUrlOfFile); clientContext.Load(file); clientContext.ExecuteQuery(); if (file != null) { file.DeleteObject(); clientContext.ExecuteQuery(); } result = true; //Added By Pom 24/05/2016 //ลบ Folder ทิ้งในกรณีที่ไม่มี file เหลือใน Folder นั้น try { log.Info("Start Delete Folder " + sitePath + folderName + "/"); ToEcm.Folder folder = web.GetFolderByServerRelativeUrl(sitePath + folderName + "/"); clientContext.Load(folder); clientContext.ExecuteQuery(); if (folder != null) { ToEcm.FileCollection fileColl = folder.Files; clientContext.Load(fileColl); clientContext.ExecuteQuery(); log.Info("Files currently in folder " + folderName + " = " + fileColl.Count.ToString()); if (fileColl.Count == 0) { folder.DeleteObject(); clientContext.ExecuteQuery(); log.Info("Folder Deleted Successfully"); } } else { log.Info("Folder " + folderName + " is null"); } } catch (Exception ex) { log.Error("Error DeleteFile : Cannot delete empty folder " + folderName + ", " + ex); } } } catch (Exception ex) { log.Error("Error DeleteFile : " + ex); } return(result); }
private Folder MoveFld(Folder folder, string newUrl, bool delete = true) { var newFolder = CreateFolder(newUrl); if (delete) { folder.Folders.ToList().ForEach(r => MoveFolder(r.ServerRelativeUrl, newUrl)); folder.Files.ToList().ForEach(r => MoveFile(r.ServerRelativeUrl, newUrl)); folder.DeleteObject(); clientContext.ExecuteQuery(); } else { folder.Folders.ToList().ForEach(r => CopyFolder(r.ServerRelativeUrl, newUrl)); folder.Files.ToList().ForEach(r => CopyFile(r.ServerRelativeUrl, newUrl)); } return newFolder; }