загрузить файл из OneDrive с помощью Microsoft.SharePoint.Client

У меня есть приложение winforms, и мне нужно загрузить файлы из каталога Sharepoint OneDrive. В настоящее время, учитывая приведенный ниже код, я могу прочитать заголовок файла, но не могу найти ничего, что помогло бы мне загрузить код с помощью Microsoft.SharePoint.Client .

string username = "[email protected]";
String pwd = "x!@ex";

ClientContext context = new ClientContext("https://abcuser.sharepoint.com/Main/financial/");

SecureString password = new SecureString();
foreach (char c in pwd.ToCharArray())
{
    password.AppendChar(c);
}

context.Credentials = new SharePointOnlineCredentials(username, password);
context.ExecuteQuery();

List docs = context.Web.Lists.GetByTitle("Financial Notes");
Web site = context.Web;
context.Load(site);
context.ExecuteQuery();

CamlQuery query = CamlQuery.CreateAllItemsQuery(100);
ListItemCollection items = docs.GetItems(query);

context.Load(items);
context.ExecuteQuery();
foreach (ListItem listItem in items)
{
    MessageBox.Show(listItem["Title"].ToString());
}

Как я могу загрузить файлы на свой локальный диск (без авторизации LiveAccount)?


person user3929962    schedule 12.08.2014    source источник


Ответы (1)


Используйте File.OpenBinaryDirect метод для загрузки указанного файла с сайта SharePoint.

В следующем примере показано, как загрузить файл из библиотеки, указав идентификатор элемента.

Пример

/// <summary>
/// Download file from a Library 
/// </summary>
/// <param name="context">CSOM context</param>
/// <param name="listTitle">List Title</param>
/// <param name="listItemId">List Item Id</param>
/// <param name="downloadPath">Download Path</param>
private static void DownloadFile(ClientContext context, string listTitle, int listItemId, string downloadPath)
{
    var list = context.Web.Lists.GetByTitle(listTitle);
    var listItem = list.GetItemById(listItemId);
    context.Load(listItem, i => i.File);
    context.ExecuteQuery();

    var fileRef = listItem.File.ServerRelativeUrl;
    var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(context, fileRef);
    var fileName = Path.Combine(downloadPath, listItem.File.Name);
    using (var fileStream = System.IO.File.Create(fileName))
    {
        fileInfo.Stream.CopyTo(fileStream);
    }
}
person Vadim Gremyachev    schedule 13.08.2014