有人知道如何使用C#OneDrive SDK执行可恢复上传吗?
当我使用IDriveItemRequestBuilder.CreateUploadSession时,我总是获得一个新会话,并重置NextExpectedRanges。 如果我使用.UploadURL并手动发送HTTP帖子,则会得到正确的下一个范围,但是我随后不知道使用sdk恢复上传会话的方法。从API到“ OpenUploadSession”似乎没有任何办法,或者至少我可以找到。 我也找不到一个可行的例子。 我怀疑这一定是一个常见的用例。
请注意,文本中的关键字-可恢复。
答案 0 :(得分:0)
恢复方法取决于您拥有多少状态。所需的最低要求最低为UploadSession.UploadUrl
(可将其视为会话的唯一标识符)。如果没有该URL,则需要创建一个新的上传会话并从头开始,否则,可以执行以下操作来恢复:
var uploadSession = new UploadSession
{
NextExpectedRanges = Enumerable.Empty<string>(),
UploadUrl = persistedUploadUrl,
};
var maxChunkSize = 320 * 1024; // 320 KB - Change this to your chunk size. 5MB is the default.
var provider = new ChunkedUploadProvider(uploadSession, graphClient, ms, maxChunkSize);
// This will query the service and make sure the remaining ranges are accurate.
uploadSession = await provider.UpdateSessionStatusAsync();
// Since the remaining ranges is now accurate, this will return the requests required to
// complete the upload.
var chunkRequests = provider.GetUploadChunkRequests();
...
如果您有更多状态,则可以跳过上述某些内容。例如,如果您已经有一个ChunkedUploadProvider
,但不知道它是正确的(也许它已序列化到磁盘等),则可以通过调用UpdateSessionStatusAsync
来开始该过程。>
仅供参考,您可以查看ChunkedUploadProvider
here的代码,以防万一,了解幕后的情况。