Sdílet prostřednictvím


Připojení dat k doplňovacímu objektu blob pomocí .NET

K objektu blob můžete připojit data vytvořením doplňovacího objektu blob. Doplňovací objekty blob jsou složené z bloků podobně jako objekty blob bloku, ale jsou optimalizované pro připojovací operace. Objekty blob připojení jsou ideální pro scénáře, jako je protokolování dat z virtuálních počítačů.

Poznámka

Příklady v tomto článku předpokládají, že jste vytvořili objekt BlobServiceClient pomocí pokynů v článku Začínáme s Azure Blob Storage a .NET. Objekty blob ve službě Azure Storage jsou uspořádané do kontejnerů. Před nahráním objektu blob musíte nejprve vytvořit kontejner. Informace o vytvoření kontejneru najdete v tématu Vytvoření kontejneru ve službě Azure Storage pomocí .NET.

Vytvoření doplňovacího objektu blob a připojení dat

Pomocí těchto metod vytvořte doplňovací objekt blob.

K připojení dat k danému doplňovacímu objektu blob použijte některou z těchto metod:

Maximální velikost v bajtech každé operace připojení je definována AppendBlobMaxAppendBlockBytes vlastnost. Následující příklad vytvoří doplňovací objekt blob a připojí k tomuto objektu blob data protokolu. Tento příklad používá Vlastnost AppendBlobMaxAppendBlockBytes k určení, zda jsou vyžadovány více operací připojení.

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

Viz také