Sdílet prostřednictvím


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

Data můžete k objektu blob připojit vytvořením doplňovacího objektu blob. Appendovací objekty blob se skládají z bloků, podobně jako blokové objekty blob, ale jsou optimalizovány pro připojovací operace. Doplňovací objekty blob jsou ideální pro scénáře, jako jsou protokolování dat z virtuálních počítačů.

Poznámka:

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

Vytvořte blob pro připojování a připojte data

Tyto metody slouží k vytvoření připojovacího blobu.

K přidání dat k danému objektu typu append blob použijte některou z těchto metod:

Maximální velikost v bajtech každé operace přidávání je definována vlastností AppendBlobMaxAppendBlockBytes. Následující příklad vytvoří připojovací blob a připojí protokolová data k tomuto blobu. Tento příklad používá AppendBlobMaxAppendBlockBytes vlastnost k určení, zda je vyžadováno 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é