0

We have a site which has few document libraries and each library has n number or folders and sub folders.

I want to get all the files only from the folders or sub folders which name is ABC and XYZ using CSOM or REST.

1

2 Answers 2

0

Below is the CSOM code to get the list of files in a folder in SharePoint online library.

static void Main(string[] args)
{
    string userName = "<user name>";
    string password = "<password>";
    var securePassword = new SecureString();
    foreach (char c in password)
    {
        securePassword.AppendChar(c);
    }
    using (ClientContext cxt = new ClientContext("<your site URL>"))
    {
        cxt.Credentials = new SharePointOnlineCredentials(userName, securePassword);
        Web web = cxt.Web;
        cxt.Load(web, a => a.ServerRelativeUrl);
        cxt.ExecuteQuery();
        List list = cxt.Web.Lists.GetByTitle("<your library name >");
        cxt.Load(list);
        cxt.Load(list.RootFolder);
        cxt.Load(list.RootFolder.Folders);
        cxt.Load(list.RootFolder.Files);
        cxt.ExecuteQuery();
        FolderCollection fcol = list.RootFolder.Folders;
        List<string> lstFile = new List<string>();
        foreach (Folder f in fcol)
        {
            if (f.Name == "<your folder name>")
            {
                cxt.Load(f.Files);
                cxt.ExecuteQuery();
                FileCollection fileCol = f.Files;
                foreach (File file in fileCol)
                {
                    lstFile.Add(file.Name);
                }
            }
        }
    }
}
3
  • Thanks for your response. Above code will work for all the folders in the library not the subfolders. Commented Jun 7, 2018 at 14:19
  • Check this article: sharepoint.stackexchange.com/questions/211165/… Commented Jun 8, 2018 at 2:00
  • I am able to get all files from all the folders and subfolders. But I need only files which has modified or created yesterday. Tried the CAML query camlQuery.ViewXml = "<View Scope='Recursive'><Query><Where><Eq><FieldRef Name = 'Modified'/><Value Type = 'DateTime'> <Today OffsetDays='-1'/></Value ></Eq></Where></Query></View>"; But no hope . Commented Jul 20, 2018 at 12:10
0
public static void DownloadAllDocumentsfromLibrary()
{
    //ClientContext ctxSite = GetSPOContext();

ClientContext clientcontext= new ClientContext("http://your server"));
clientcontext.Load(clientcontext.Web.Lists);
clientcontext.ExecuteQuery();

   //string libraryname = "DownloadCSOM";


   foreach (List list in clientcontext.Web.Lists)
    {
      
    if (list.BaseType.ToString() == "DocumentLibrary")
     {

     var list = ctxSite.Web.Lists.GetByTitle(list.Title);
    var rootFolder = list.RootFolder;
    string pathString = string.Format(@"{0}{1}\", @"C:\", libraryname);
    if (!Directory.Exists(pathString))
        System.IO.Directory.CreateDirectory(pathString);
    GetFoldersAndFiles(rootFolder, ctxSite, pathString);

}




}

   
    
}
 
private static void GetFoldersAndFiles(Folder mainFolder, ClientContext clientContext, string pathString)
{
    try
    {
        clientContext.Load(mainFolder, k => k.Name, k => k.Files, k => k.Folders);
        clientContext.ExecuteQuery();
        foreach (var folder in mainFolder.Folders)
        {
            string subfolderPath = string.Format(@"{0}{1}\", pathString, folder.Name);
            if (!Directory.Exists(subfolderPath))
                System.IO.Directory.CreateDirectory(subfolderPath);
 
            GetFoldersAndFiles(folder, clientContext, subfolderPath);
        }
 
        foreach (var file in mainFolder.Files)
        {
            var fileName = Path.Combine(pathString, file.Name);
            if (!System.IO.File.Exists(fileName))
            {
                var fileRef = file.ServerRelativeUrl;
                var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, fileRef);
                using (var fileStream = System.IO.File.Create(fileName))
                {
                    fileInfo.Stream.CopyTo(fileStream);
                }
            }
        }
 
    }
    catch (Exception ex)
    {
 
    }
}
 
private static ClientContext GetSPOContext()
{
 
    string UserName = "[email protected]";
    string spsiteurl = "https://tenant.sharepoint.com/sites/sitename/";
    string Pwd = "Password";
    var secure = new SecureString();
    foreach (char c in Pwd)
    {
        secure.AppendChar(c);
    }
    ClientContext spoContext = new ClientContext(spsiteurl);
    spoContext.Credentials = new SharePointOnlineCredentials(UserName, secure);
    return spoContext;
 
}

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.