Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 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);
 }