Delen via


Gegevens toevoegen aan een toevoeg-blob met .NET

U kunt gegevens toevoegen aan een blob door een toevoeg-blob te maken. Toevoeg-blobs bestaan uit blokken zoals blok-blobs, maar zijn geoptimaliseerd voor toevoegbewerkingen. Toevoeg-blobs zijn ideaal voor scenario's zoals het registreren van logboekgegevens van virtuele machines.

Notitie

In de voorbeelden in dit artikel wordt ervan uitgegaan dat u een BlobServiceClient-object hebt gemaakt met behulp van de richtlijnen in het artikel Aan de slag met Azure Blob Storage en .NET. Blobs in Azure Storage worden georganiseerd in containers. Voordat u een blob kunt uploaden, moet u eerst een container maken. Zie Een container maken in Azure Storage met .NET voor meer informatie over het maken van een container.

Een toevoeg-blob maken en gegevens toevoegen

Gebruik deze methoden om een toevoeg-blob te maken.

Gebruik een van deze methoden om gegevens toe te voegen aan die toevoeg-blob:

De maximale grootte in bytes van elke toevoegbewerking wordt gedefinieerd door de eigenschap AppendBlobMaxAppendBlockBytes . In het volgende voorbeeld wordt een toevoeg-blob gemaakt en worden logboekgegevens aan die blob toegevoegd. In dit voorbeeld wordt de eigenschap AppendBlobMaxAppendBlockBytes gebruikt om te bepalen of meerdere toevoegbewerkingen vereist zijn.

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

Zie ook