本文整理汇总了C#中Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.PutBlockAsync方法的典型用法代码示例。如果您正苦于以下问题:C# CloudBlockBlob.PutBlockAsync方法的具体用法?C# CloudBlockBlob.PutBlockAsync怎么用?C# CloudBlockBlob.PutBlockAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
的用法示例。
在下文中一共展示了CloudBlockBlob.PutBlockAsync方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BlockCreateAsync
/// <summary>
/// Create a block with a random name.
/// </summary>
/// <param name="testBlob">The block blob.</param>
/// <param name="testAccessCondition">The access condition.</param>
/// <returns>The name of the new block.</returns>
private async Task<string> BlockCreateAsync(CloudBlockBlob testBlob, AccessCondition testAccessCondition, OperationContext operationContext)
{
byte[] buffer = new byte[4 * 1024];
Random random = new Random();
random.NextBytes(buffer);
string blockId = Guid.NewGuid().ToString("N");
Stream blockData = new MemoryStream(buffer);
await testBlob.PutBlockAsync(blockId, blockData.AsInputStream(), null /* content MD5 */, testAccessCondition, null /* options */, operationContext);
return blockId;
}
示例2: CreateForTestAsync
private static async Task CreateForTestAsync(CloudBlockBlob blob, int blockCount, int blockSize, bool commit = true)
{
byte[] buffer = GetRandomBuffer(blockSize);
List<string> blocks = GetBlockIdList(blockCount);
foreach (string block in blocks)
{
using (MemoryStream stream = new MemoryStream(buffer))
{
await blob.PutBlockAsync(block, stream.AsInputStream(), null);
}
}
if (commit)
{
await blob.PutBlockListAsync(blocks);
}
}
示例3: AppendToBlob
private static async Task AppendToBlob(CloudBlockBlob blockBlob, string content, string md5)
{
var leaseId = await blockBlob.AcquireLeaseAsync(TimeSpan.FromSeconds(30), null);
var access = AccessCondition.GenerateLeaseCondition(leaseId);
var options = new BlobRequestOptions();
var context = new OperationContext();
try
{
var blockId = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(content)))
{
stream.Position = 0;
await blockBlob.PutBlockAsync(blockId, stream, md5, access, options, context);
}
var blockList = await blockBlob.DownloadBlockListAsync(BlockListingFilter.Committed, access, options, context);
var blockIds = blockList.Select(x => x.Name).ToList();
blockIds.Add(blockId);
await blockBlob.PutBlockListAsync(blockIds, access, options, context);
}
catch(Exception ex)
{
//TODO - logging
}
finally
{
await blockBlob.ReleaseLeaseAsync(access);
}
}
示例4: UploadCurrentChunk
/// <summary>
/// Uploads the current chunk to the storage
/// </summary>
/// <param name="model"></param>
/// <param name="chunk"></param>
/// <param name="id"></param>
/// <param name="blobBlock"></param>
/// <returns></returns>
private async Task<JsonResult> UploadCurrentChunk(CloudFile model, byte[] chunk, int id, CloudBlockBlob blobBlock)
{
using (var chunkStream = new MemoryStream(chunk))
{
var blockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(
string.Format(CultureInfo.InvariantCulture, "{0:D4}", id)));
try
{
//model.BlockBlob.PutBlockAsync(
// blockId,
// chunkStream, null, null,
// new BlobRequestOptions()
// {
// RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(10), 3)
// },
// null);
await blobBlock.PutBlockAsync(
blockId,
chunkStream, null, null,
new BlobRequestOptions()
{
RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(10), 3)
},
null);
return null;
}
catch (StorageException e)
{
HttpContext.Session.Remove("CurrentFile");
model.IsUploadCompleted = true;
model.UploadStatusMessage = "Failed to Upload file. Exception - " + e.Message;
return Json(new { error = true, isLastBlock = false, message = model.UploadStatusMessage });
}
}
}