Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dane można dołączyć do obiektu blob, tworząc uzupełnialne obiekty blob. Uzupełnialne obiekty blob również składają się z bloków, podobnie jak blokowe obiekty blob, lecz są zoptymalizowane pod kątem operacji dołączania. Uzupełnialne obiekty blob doskonale sprawdzają się w sytuacjach takich jak zapisywanie danych dzienników z maszyn wirtualnych.
Uwaga
W przykładach w tym artykule założono, że utworzono obiekt BlobServiceClient, korzystając ze wskazówek w artykule Wprowadzenie do Azure Blob Storage i platformy .NET. Obiekty blob w usłudze Azure Storage są zorganizowane w kontenery. Przed przekazaniem obiektu blob należy najpierw utworzyć kontener. Aby dowiedzieć się, jak utworzyć kontener, zobacz Tworzenie kontenera w usłudze Azure Storage przy użyciu platformy .NET.
Tworzenie uzupełnialnych obiektów blob i dołączanie danych
Użyj tych metod, aby utworzyć uzupełnialne obiekty blob.
Użyj jednej z tych metod, aby dołączyć dane do tego uzupełnialnych obiektów blob:
Maksymalny rozmiar w bajtach każdej operacji dołączania jest definiowany przez właściwość AppendBlobMaxAppendBlockBytes . Poniższy przykład tworzy uzupełnialne obiekty blob i dołącza dane dziennika do tego obiektu blob. W tym przykładzie użyto właściwości AppendBlobMaxAppendBlockBytes w celu określenia, czy wymagane są wiele operacji dołączania.
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;
}
}