Вот код, который я написал недавно, используя Microsoft Graph .Net SDK. Требуется проверка подлинности GraphServiceClient (graphClient).
if (fileSize.MegaBytes > 4)
{
var session = await graphClient.Drive.Root.ItemWithPath(uploadPath).CreateUploadSession().Request().PostAsync();
var maxSizeChunk = 320 * 4 * 1024;
var provider = new ChunkedUploadProvider(session, graphClient, stream, maxSizeChunk);
var chunckRequests = provider.GetUploadChunkRequests();
var exceptions = new List<Exception>();
var readBuffer = new byte[maxSizeChunk];
DriveItem itemResult = null;
//upload the chunks
foreach (var request in chunckRequests)
{
// Do your updates here: update progress bar, etc.
// ...
// Send chunk request
var result = await provider.GetChunkRequestResponseAsync(request, readBuffer, exceptions);
if (result.UploadSucceeded)
{
itemResult = result.ItemResponse;
}
}
// Check that upload succeeded
if (itemResult == null)
{
await UploadFilesToOneDrive(fileName, filePath, graphClient);
}
}
else
{
await graphClient.Drive.Root.ItemWithPath(uploadPath).Content.Request().PutAsync<DriveItem>(stream);
}
Это замечательно! Я посмотрю код. Благодарю. – horacioj
> Я тестировал код в/MIchaelMainer/working branch, и он работал нормально. На самом деле, это нормально для рабочих учетных записей, но он не работает («Ошибка аутентификации») для личных учетных записей (даже небольших файлов). В документации ничего не говорится об этой функции только для учетных записей. Может, это так? Или есть ошибка? Если это ошибка, я не вижу в коде, где это может быть, потому что единственным отличием является тип учетной записи. (связанный: https://github.com/microsoftgraph/msgraph-sdk-dotnet/issues/61) – horacioj