Способ возобновления зависит от того, сколько у вас состояния. Требуемый минимум освобождения составляет 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
здесь на тот случай, если будет полезно увидеть, что происходит под одеялом.