Как я могу скачать файлы с Sharepoint? - PullRequest
0 голосов
/ 12 марта 2020

Я просматриваю свой экземпляр, https://instance.sharepoint.com/1234/abc

На этой странице содержится список из нескольких папок и файлов. Как мне загрузить файлы по этому пути?

    ClientContext cxt = new ClientContext(fullWebUrl);
    cxt.Credentials = new SharePointOnlineCredentials(username, new NetworkCredential("", password).SecurePassword);

    List list = cxt.Web.Lists.GetByTitle("Documents");

    cxt.Load(list);
    cxt.ExecuteQuery();

    FolderCollection fcol = list.RootFolder.Folders;

    List<string> lstFile = new List<string>();

    foreach (Folder f in fcol)
    {
        if (f.Name == "filename")
        {
            cxt.Load(f.Files);
            cxt.ExecuteQuery();
            FileCollection fileCol = f.Files;

            foreach (Microsoft.SharePoint.Client.File file in fileCol)
            {
                lstFile.Add(file.Name);
            }
        }
    }

Это происходит на foreach с ошибкой

Microsoft.SharePoint.Client.CollectionNotInitializedException: 'The collection has not been initialized

Не будет cxt.ExecuteQuery делать работу?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Сначала необходимо загрузить fcol FolderCollection (cxt.Load (fcol)):

      List list = cxt.Web.Lists.GetByTitle("Documents");

      cxt.Load(list);
      cxt.ExecuteQuery();

      FolderCollection fcol = list.RootFolder.Folders;
      cxt.Load(fcol);
      cxt.ExecuteQuery();
      List<string> lstFile = new List<string>();

      foreach (Folder f in fcol)
      {
        if (f.Name == "filename")
        {
          cxt.Load(f.Files);
          cxt.ExecuteQuery();
          FileCollection fileCol = f.Files;

          foreach (Microsoft.SharePoint.Client.File file in fileCol)
          {
            lstFile.Add(file.Name);
          }
        }
      }

Для загрузки файла:

 foreach (Microsoft.SharePoint.Client.File file in fileCol)
  {
    var localstream = System.IO.File.Open("c:/" + file.Name, System.IO.FileMode.CreateNew);
    var fileInfo = File.OpenBinaryDirect(cxt, file.ServerRelativeUrl);
    var spstream = fileInfo.Stream;
    spstream.CopyTo(localstream);
  }
0 голосов
/ 13 марта 2020

вы можете сделать массовую загрузку из библиотеки SharePoint без использования кода, просто сделайте следующее:

1: go в свою библиотеку SharePoint

2: скопируйте полный путь для пример

https://sharepointdomain.com/sites/yoursite/yourLibraryName/forms/Allitems.aspx

теперь удалите

/ forms / allitems.aspx из адреса, и вы останетесь с

https://sharepointdomain.com/sites/yoursite/yourLibraryName

скопируйте его и откройте браузер файлов windows и вставьте его в адресную строку, и ваша библиотека будет открыта как локальная папка, затем вы можете выбрать все файлы и скопируйте их в любое место назначения, даже если вы можете переместить их в другую библиотеку SharePoint. Возможно, вам будет предложено ввести учетные данные SharePoint. Убедитесь, что они указаны следующим образом: имя пользователя: домен \ ваш пароль имени пользователя SharePoint: ваш пароль для входа в SharePoint.

...