Список всех файлов в онлайн-библиотеке документов Sharepoint - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь перечислить все файлы из списка документов Sharepoint,

однако я не могу найти способ получить доступ к списку содержимого библиотеки документов,

Мне удалось распечатать имена всех списков, которые содержит Sharepoint, но не файлов, которые есть в библиотеке документов,

Вот мой пример кода:

частный статический void FList (учетные данные ICredentials) {

        ClientContext ctx = new 
        ClientContext(" SHAREPOINT ADDRESS");
        ctx.Credentials = credentials; 
        List doclib = ctx.Web.Lists.GetByTitle("Reporting Rosters"); 
        ctx.Load(ctx.Web.Lists);
        ctx.ExecuteQuery();
        foreach (var list in ctx.Web.Lists)
        {

            Console.WriteLine(list.Title);

        }

Результатом является список списка Sharepoint, я был бы признателен, если бы кто-нибудь мог мне подсказать, как выставлять имена файлов внутри библиотеки документов sharepoint

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Можете ли вы попробовать это:

    ClientContext cxt = new ClientContext("SHAREPOINT ADDRESS");
    List doclib = cxt.Web.Lists.GetByTitle("Reporting Rosters");

    cxt.Load(doclib);
    cxt.Load(doclib.RootFolder);
    cxt.Load(doclib.RootFolder.Folders);
    cxt.Load(doclib.RootFolder.Files);
    cxt.ExecuteQuery();
    FolderCollection fol = doclib.RootFolder.Folders;
    List<string> listFile = new List<string>();
    foreach(Folder f in fol)
    {
        if (f.Name == "filename")
        {
            cxt.Load(f.Files);
            cxt.ExecuteQuery();
            FileCollection fileCol = f.Files;
            foreach (File file in fileCol)
            {
                listFile.Add(file.Name);
            }
        }
    }
0 голосов
/ 05 сентября 2018

Вот код, который на самом деле будет перебирать файлы, подпапки и файлы внутри этих подпапок

var credentials = new SharePointOnlineCredentials(username, securedPassword);
private static void Flist3(ICredentials credentials)
    {

        ClientContext clientContext = new ClientContext("SHAREPOINT ADDRESS");
        clientContext.Credentials = credentials;  // passing credentials in case you need to work with Sharepoint Online
        using (clientContext)
        {
            List list = clientContext.Web.Lists.GetByTitle("Document Library Name");
            CamlQuery camlQuery = new CamlQuery();
            camlQuery.ViewXml = @"<View Scope='Recursive'><Query></Query></View>";
            Folder ff = list.RootFolder;
            FolderCollection fcol = list.RootFolder.Folders; // here you will save the folder info inside a Folder Collection list
            List<string> lstFile = new List<string>();
            FileCollection ficol = list.RootFolder.Files;   // here you will save the File names inside a file Collection list 
            // ------informational -------
            clientContext.Load(ff);
            clientContext.Load(list);
            clientContext.Load(list.RootFolder);
            clientContext.Load(list.RootFolder.Folders);
            clientContext.Load(list.RootFolder.Files);
            clientContext.ExecuteQuery();
            Console.WriteLine("Root : " + ff.Name + "\r\n");
            Console.WriteLine(" ItemCount : " + ff.ItemCount.ToString());
            Console.WriteLine(" Folder Count : " + ff.Folders.Count.ToString());
            Console.WriteLine(" File Count : " + ff.Files.Count.ToString());

            Console.WriteLine(" URL : " + ff.ServerRelativeUrl);
            //---------------------------
            //---------Here you iterate through the files and not the folders that are in the root folder ------------
            foreach (ClientOM.File f in ficol)
            {
                Console.WriteLine("Files Name:" + f.Name);
            }
            //-------- here you will iterate through the folders and the files inside the folders that reside in the root folder----
            foreach (Folder f in fcol)
            {
                Console.WriteLine("Folder Name : " + f.Name);
                clientContext.Load(f.Files);
                clientContext.ExecuteQuery();
                FileCollection fileCol = f.Files;
                foreach (ClientOM.File file in fileCol)
                {
                    lstFile.Add(file.Name);
                    Console.WriteLine(" File Name : " + file.Name);

                }

}

0 голосов
/ 05 сентября 2018

Вам нужно перебрать ListItemCollection вместо ListCollection.

Для этого вам нужно получить все элементы в списке, используя CAML-запрос, а затем выполнить итерацию по этому.

Итак, измените ваш код, как показано ниже:

List doclib = ctx.Web.Lists.GetByTitle("Reporting Rosters"); 
ctx.Load(doclib);
ctx.ExecuteQuery();

Microsoft.SharePoint.Client.CamlQuery camlQuery = CamlQuery.CreateAllItemsQuery();
ListItemCollection listItems = doclib.GetItems(camlQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();

foreach (var listItem in listItems)
{
    Console.WriteLine(listItem["FileLeafRef"].ToString());  // gives the file name
    Console.WriteLine(listItem["FileRef"].ToString());  // gives the file's server relative URL
}
...