Ajouter des données à un objet blob d’ajout avec .NET

Vous pouvez ajouter des données à un objet blob en créant un objet blob d’ajouts. Les objets blob d’ajout se composent de blocs, comme les objets blob de blocs, mais sont optimisés pour les opérations d’ajout. Les objets blob d’ajout sont parfaits pour les scénarios tels que la consignation des données issues des machines virtuelles.

Notes

Les exemples présentés dans cet article partent du principe que vous avez créé un objet BlobServiceClient en suivant les recommandations de l’article Bien démarrer avec le Stockage Blob Azure et .NET. Les objets BLOB dans le stockage Azure sont organisés en conteneurs. Avant de pouvoir télécharger un objet BLOB, vous devez d’abord créer un conteneur. Pour découvrir comment créer un conteneur, consultez Créer un conteneur dans Stockage Azure avec .Net.

Créer un objet blob d’ajouts et ajouter des données

Utilisez ces méthodes pour créer un objet blob d’ajouts.

Utilisez l’une des méthodes suivantes pour ajouter des données à cet objet blob d’ajouts :

La taille maximale, en octets, de chaque opération d’ajout est définie par la propriété AppendBlobMaxAppendBlockBytes. L’exemple suivant crée un objet blob d’ajouts et y ajoute des données de journal. Cet exemple utilise la propriété AppendBlobMaxAppendBlockBytes pour déterminer si plusieurs opérations d’ajout sont requises.

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

Voir aussi