Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você pode acrescentar dados a um blob criando um blob de acréscimo. Os blobs de acréscimo são compostos por blocos, semelhantes aos blobs de bloco, mas são especificamente otimizados para operações de acréscimo. Os blobs de acréscimo são ideais para cenários como o registo de dados de máquinas virtuais.
Observação
Os exemplos neste artigo pressupõem que você criou um objeto BlobServiceClient usando as orientações no artigo Introdução ao Armazenamento de Blobs do Azure e .NET . Os blobs no Armazenamento do Azure são organizados em contêineres. Antes de carregar um blob, você deve primeiro criar um contêiner. Para saber como criar um contêiner, consulte Criar um contêiner no Armazenamento do Azure com .NET.
Criar um blob de acréscimo e acrescentar dados
Utilize estes métodos para criar um blob de anexação.
Use um destes métodos para acrescentar dados a esse blob de acréscimo:
O tamanho máximo em bytes de cada operação de acréscimo é definido pela propriedade AppendBlobMaxAppendBlockBytes . O exemplo a seguir cria um blob de anexação e acrescenta dados de log a esse blob. Este exemplo usa a propriedade AppendBlobMaxAppendBlockBytes para determinar se várias operações de acréscimo são necessárias.
static async Task AppendToBlob(
BlobContainerClient containerClient,
MemoryStream logEntryStream,
string logBlobName)
{
AppendBlobClient appendBlobClient = containerClient.GetAppendBlobClient(logBlobName);
await appendBlobClient.CreateIfNotExistsAsync();
int maxBlockSize = appendBlobClient.AppendBlobMaxAppendBlockBytes;
long bytesLeft = logEntryStream.Length;
byte[] buffer = new byte[maxBlockSize];
while (bytesLeft > 0)
{
int blockSize = (int)Math.Min(bytesLeft, maxBlockSize);
int bytesRead = await logEntryStream.ReadAsync(buffer.AsMemory(0, blockSize));
await using (MemoryStream memoryStream = new MemoryStream(buffer, 0, bytesRead))
{
await appendBlobClient.AppendBlockAsync(memoryStream);
}
bytesLeft -= bytesRead;
}
}