"超过最大请求长度"将文件上传到Onedrive时

时间:2017-05-15 08:07:52

标签: c# onedrive

我正在使用" OneDriveApiBrowser"中的示例代码。作为添加保存到我的应用程序的一个驱动器支持的基础。这使用了Microsoft.Graph,我可以上传小文件,但是较大的文件(10Mb)将无法上传并发出错误"超出最大请求长度"。我的应用程序和示例代码中的错误与以下代码行相同:

DriveItem uploadedItem = await graphClient.Drive.Root.ItemWithPath(drivePath).Content.Request().PutAsync<DriveItem>(newStream);

有没有办法增加可以上传的文件的最大大小?如果是这样的话?

1 个答案:

答案 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;
    }
}