Compartir a través de


Anexación de datos a un blob anexo con .NET

Puede anexar datos a un blob al crear un blob anexo. Los blobs en anexos constan de bloques, como los blobs en bloques, pero están optimizados para operaciones de anexión. Los blobs en anexos resultan muy convenientes para escenarios como el registro de datos de máquinas virtuales.

Nota:

En los ejemplos de este artículo se supone que ha creado un objeto BlobServiceClient mediante la guía del artículo Comenzar con Azure Blob Storage y .NET. Los blobs de Azure Storage se organizan en contenedores. Antes de poder cargar un blob, primero debe crear un contenedor. Para obtener información sobre cómo crear un contenedor, consulte Creación de un contenedor en Azure Storage con .NET.

Crear un blob anexo y anexar datos

Use estos métodos para crear un blob anexo.

Use cualquiera de estos métodos para anexar datos a ese blob anexo:

La propiedad AppendBlobMaxAppendBlockBytes define el tamaño máximo en bytes de cada operación anexa. En el ejemplo siguiente se crea un blob anexo y se anexan los datos de registro a ese blob. En este ejemplo se usa la propiedad AppendBlobMaxAppendBlockBytes para determinar si se requieren varias operaciones anexas.

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;
    }
}

Consulte también