Anfügen von Daten an ein Anfügeblob mit .NET

Sie können Daten an ein Blob anfügen, indem Sie ein Anfügeblob erstellen. Anfügeblobs bestehen wie Blockblobs auch aus Blöcken, aber sie sind für Anfügevorgänge optimiert. Anfügeblobs sind beispielsweise ideal für Szenarien, bei denen es um das Protokollieren von Daten virtueller Computer geht.

Hinweis

In den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie ein BlobServiceClient-Objekt anhand der Anleitung im Artikel Erste Schritte mit Azure Blob Storage und .NET erstellt haben. Blobs in Azure Storage sind in Containern organisiert. Bevor Sie ein Blob hochladen können, müssen Sie zunächst einen Container erstellen. Informationen zum Erstellen eines Containers finden Sie unter Erstellen oder Löschen eines Containers in Azure Storage mit .NET.

Erstellen eines Anfügeblobs und Anfügen von Daten

Mit den folgenden Methoden können Sie ein Anfügeblob erstellen.

Verwenden Sie eine der folgenden Methoden, um Daten an das betreffende Anfügeblob anzufügen:

Die maximale Größe in Bytes jedes Anfügevorgangs wird durch die AppendBlobMaxAppendBlockBytes-Eigenschaft definiert. Im folgenden Beispiel wird ein Anfügeblob erstellt, an das Protokolldaten angefügt werden. In diesem Beispiel wird die AppendBlobMaxAppendBlockBytes-Eigenschaft verwendet, um zu bestimmen, ob mehrere Anfügevorgänge erforderlich sind.

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

Weitere Informationen