Microsoft Graphの.NET SDKを使用すると、(小)ファイルをアップロードできます。例here。Microsoft Graph - .NET SDK - OneDrive大容量ファイルのアップロード(サイズが4MB以上)
.NET SDKを使用して大きなファイル(> 4MB)をアップロードするにはどうすればよいですか?
つまり、"Upload large files with an upload session"の実装にSDKを利用できますか?
Microsoft Graphの.NET SDKを使用すると、(小)ファイルをアップロードできます。例here。Microsoft Graph - .NET SDK - OneDrive大容量ファイルのアップロード(サイズが4MB以上)
.NET SDKを使用して大きなファイル(> 4MB)をアップロードするにはどうすればよいですか?
つまり、"Upload large files with an upload session"の実装にSDKを利用できますか?
これは、.NET Microsoft Graphクライアントライブラリの次のリリースで使用できます。 .NET OneDriveクライアントライブラリの機能と同じように動作します。私の仕事でこれを確認することができますbranch。レポでフィードバックを提供することができます。
私は最近、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ブランチのコードをテストしたところ、うまくいきました。 実際には、仕事用のアカウントでは問題ありませんが、個人用アカウント(小規模のファイルでも)は失敗します(「認証に失敗しました」)。ドキュメンテーションは、これが作業アカウント機能であることについては何も述べていません。おそらくそれは?またはバグがありますか?バグの場合は、コードの中にどこにあるのかわかりません。なぜなら、1つの違いはアカウントの種類だからです。 (関連:https://github.com/microsoftgraph/msgraph-sdk-dotnet/issues/61) – horacioj