Итак, я попытался этот код с параметром HttpInfo
, как показано ниже, и работал нормально. Из вашего сообщения, и как указал @Bryan Huang, ошибка, скорее всего, связана с аутентификацией (или временным сбоем)
long chunkSize = 2 * 1024 * 1024; // 2 Mb
long numberOfChunks = (long)Math.Round((double)(fileSize / chunkSize)) + 1;
progressBar.Maximum = (int)numberOfChunks;
long start = 0;
chunkSize = (numberOfChunks > 1 ? chunkSize : fileSize);
long end = chunkSize;
string sessionId = Guid.NewGuid().ToString();
// upload one chunk at a time
using (BinaryReader reader = new BinaryReader(new FileStream(filePath, FileMode.Open)))
{
for (int chunkIndex = 0; chunkIndex < numberOfChunks; chunkIndex++)
{
string range = string.Format("bytes {0}-{1}/{2}", start, end, fileSize);
long numberOfBytes = chunkSize + 1;
byte[] fileBytes = new byte[numberOfBytes];
MemoryStream memoryStream = new MemoryStream(fileBytes);
reader.BaseStream.Seek((int)start, SeekOrigin.Begin);
int count = reader.Read(fileBytes, 0, (int)numberOfBytes);
memoryStream.Write(fileBytes, 0, (int)numberOfBytes);
memoryStream.Position = 0;
dynamic chunkUploadResponse = await objects.UploadChunkAsyncWithHttpInfo(bucketKey, objectKey, (int)numberOfBytes, range, sessionId, memoryStream);
start = end + 1;
chunkSize = ((start + chunkSize > fileSize) ? fileSize - start - 1 : chunkSize);
end = start + chunkSize;
progressBar.CustomText = string.Format("{0} Mb uploaded...", (chunkIndex * chunkSize) / 1024 / 1024);
progressBar.Value = chunkIndex;
}
}