public static async Task UploadBigFileWithCommitsAsync() { CloudBlockBlob blob = new CloudBlockBlob(uri, new CloudStorageAccount( new StorageCredentials(AcctName, AcctKey), useHttps: true) .CreateCloudBlobClient()); int blocksize = FOURMB; var blockList = new List <string>(); byte[] bytesRead = new byte[blocksize]; int numBytesRead = 0; MemoryStream ms = new MemoryStream(); ms.Capacity = blocksize; Boolean DoneSending = false; using (FileStream fs = File.OpenRead(Filename)) { do { Console.Write("."); NewBlockId blockId = new NewBlockId(); try { ms.Position = 0; numBytesRead = await fs.ReadAsync(bytesRead, 0, blocksize); if (numBytesRead == blocksize) { ms.Write(bytesRead, 0, blocksize); await Send4mbBlockAsync(blob, ms, blockId); } else { MemoryStream msLast = new MemoryStream(); msLast.Capacity = numBytesRead; await msLast.WriteAsync(bytesRead, 0, numBytesRead); await Send4mbBlockAsync(blob, msLast, blockId); DoneSending = true; } } catch (Exception ex) { ; } blockList.Add(blockId.Base64BlockId); await blob.PutBlockListAsync(blockList); } while (!DoneSending); } }
private static async Task Send4mbBlockAsync(CloudBlockBlob blob, MemoryStream ms, NewBlockId blockId) { ms.Seek(0, SeekOrigin.Begin); await blob.PutBlockAsync( blockId : blockId.Base64BlockId, blockData : ms, contentMD5 : null); }