Microsoft Graph - .NET SDK - OneDrive大文件上传(> 4MB大小)

问题描述 投票:2回答:2

使用.NET SDK for Microsoft Graph,您可以上传(小)文件。例子here

如何使用.NET SDK上传大文件(> 4MB)?

换句话说,可以使用SDK来实现"Upload large files with an upload session"吗?

c# onedrive microsoft-graph
2个回答
0
投票

这将在.NET Microsoft Graph客户端库的下一版本中提供。它的工作方式与.NET OneDrive客户端库中的功能相同。你可以在我工作的branch中查看这个。您可以在回购中提供反馈。


2
投票

这是我最近使用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);
                    }
© www.soinside.com 2019 - 2024. All rights reserved.