Megosztás a következőn keresztül:


Adatok hozzáfűzése egy hozzáfűző blobhoz .NET-tel

Egy hozzáfűző blob létrehozásával adatokat fűzhet hozzá egy blobhoz. A hozzáfűző blobok a blokkblobokhoz hasonlóan blokkokból állnak, azonban a hozzáfűzési műveletekhez vannak optimalizálva. A hozzáfűző blobok ideálisak például a virtuális gépek adatainak naplózásához és hasonló forgatókönyvekhez.

Megjegyzés

A cikkben szereplő példák feltételezik, hogy létrehozott egy BlobServiceClient objektumot az Első lépések a Azure Blob Storage és a .NET című cikkben található útmutatás alapján. Az Azure Storage-beli blobok tárolókba vannak rendezve. A blob feltöltése előtt létre kell hoznia egy tárolót. A tárolók létrehozásának módjáról a Tároló létrehozása az Azure Storage-ban .NET-tel című témakörben olvashat.

Hozzáfűző blob és hozzáfűző adatok létrehozása

Ezekkel a módszerekkel hozhat létre hozzáfűző blobot.

Az alábbi módszerek bármelyikével hozzáfűzhet adatokat a hozzáfűző blobhoz:

Az egyes hozzáfűzési műveletek bájtban megadott maximális méretét a AppendBlobMaxAppendBlockBytes tulajdonság határozza meg. Az alábbi példa létrehoz egy hozzáfűző blobot, és hozzáfűzi a naplóadatokat az adott blobhoz. Ez a példa a AppendBlobMaxAppendBlockBytes tulajdonságot használja annak meghatározásához, hogy szükség van-e több hozzáfűzési műveletre.

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

Lásd még