【发布时间】:2016-10-12 00:02:48
【问题描述】:
使用 .NET SDK for Microsoft Graph,您可以上传(小)文件。示例here。
如何使用 .NET SDK 上传大文件 (> 4MB)?
也就是说,SDK可以用来实现"Upload large files with an upload session"吗?
【问题讨论】:
标签: c# onedrive microsoft-graph-api
使用 .NET SDK for Microsoft Graph,您可以上传(小)文件。示例here。
如何使用 .NET SDK 上传大文件 (> 4MB)?
也就是说,SDK可以用来实现"Upload large files with an upload session"吗?
【问题讨论】:
标签: c# onedrive microsoft-graph-api
这是我最近使用 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);
}
【讨论】:
await client.Me.Drive.Items["55BBAC51A4E4017D!104"].Content.Request().PutAsync<DriveItem>(stream);
这将在 .NET Microsoft Graph 客户端库的下一版本中提供。它将与 .NET OneDrive 客户端库中的功能相同。您可以在我的工作branch 中查看此内容。您可以在 repo 中提供反馈。
【讨论】:
await client.Me.Drive.Items["55BBAC51A4E4017D!104"].Content.Request().PutAsync<DriveItem>(stream);