我正在使用" OneDriveApiBrowser"中的示例代码。作为添加保存到我的应用程序的一个驱动器支持的基础。这使用了Microsoft.Graph,我可以上传小文件,但是较大的文件(10Mb)将无法上传并发出错误"超出最大请求长度"。我的应用程序和示例代码中的错误与以下代码行相同:
DriveItem uploadedItem = await graphClient.Drive.Root.ItemWithPath(drivePath).Content.Request().PutAsync<DriveItem>(newStream);
有没有办法增加可以上传的文件的最大大小?如果是这样的话?
答案 0 :(得分:2)
图表只接受使用PUT到内容的小文件,因此您需要查看creating an upload session。由于您使用的是图表SDK,我会使用this test case as a guide。
这里有一些完整性的代码 - 它不会直接编译,但它应该让你看到所涉及的步骤:
var uploadSession = await graphClient.Drive.Root.ItemWithPath("filename.txt").CreateUploadSession().Request().PostAsync();
var maxChunkSize = 320 * 1024; // 320 KB - Change this to your chunk size. 5MB is the default.
var provider = new ChunkedUploadProvider(uploadSession, graphClient, inputStream, maxChunkSize);
// Setup the chunk request necessities
var chunkRequests = provider.GetUploadChunkRequests();
var readBuffer = new byte[maxChunkSize];
var trackedExceptions = new List<Exception>();
DriveItem itemResult = null;
//upload the chunks
foreach (var request in chunkRequests)
{
var result = await provider.GetChunkRequestResponseAsync(request, readBuffer, trackedExceptions);
if (result.UploadSucceeded)
{
itemResult = result.ItemResponse;
}
}