Как мне загрузить файл в sharepoint с помощью библиотек DLL office365

#c# #sharepoint #file-upload #office365

#c# #sharepoint #загрузка файла #office365

Вопрос:

Я пытался загрузить файл в OneDrive для бизнеса / SharePoint, используя следующие библиотеки DLL:

Майкрософт.Офис.Oauth
Microsoft.Office365.SharePoint;
Microsoft.Office365.SharePoint.Расширения;

С помощью следующего кода:

 public async void UploadDataAsync(byte[] bytes, string fileName)
{

    // NAME: TestFolder, ID: TestFolder, URL: /personal/[company]_onmicrosoft_com/Documents/TestFolder,                                                 SIZE: 0

    UserInformation userInformation = new UserInformation();
    userInformation.Id = "Castrovalva";
    userInformation.Name = "Castrovalva";

    Microsoft.Office365.SharePoint.File file = new Microsoft.Office365.SharePoint.File();
    file.CreatedBy = userInformation;
    file.LastModifiedBy = userInformation;
    file.Id = fileName;
    file.Name = fileName;
    file.Url = "/personal/[company]_onmicrosoft_com/Documents/TestFolder";
    file.TimeCreated = DateTime.Now;
    file.TimeLastModified = DateTime.Now;
    file.ETag = "ETAG";

    using (MemoryStream memory = new MemoryStream(bytes))
    {
        await file.UploadAsync(memory);
    }
}
  

Я получаю эту ошибку при попытке запустить этот код:

Система.Исключение: {«не удается найти объект»}
Источник: Microsoft.Office365.SharePoint

Чего я не понимаю, так это того, что мне не нужен объект SharePointClient (клиент, подключенный к sharepoint) для выполнения кода.
Потому что, когда я хочу получить информацию обо всех моих файлах или должен подключиться, я использую этот объект.

 _client = await EnsureClientCreated();
_client.Context.IgnoreMissingProperties = true;
  

Итак, как мне загрузить файл в OneDrive для бизнеса / SharePoint?

Ответ №1:

Я нашел решение, оно оказалось более простым, чем я ожидал:

 using (Stream stream = new MemoryStream(bytes))
{
    try
    {
        //await _client.Context.ExecuteAsync(uri, "POST", stream);
        await _client.Files.AddAsync(fileName, true, stream);
    }
    catch (InvalidOperationException exception)
    { MessageBox.Show(exception.Message); }
}