可以通过创建追加 blob 将数据追加到 blob。 与块 Blob 一样,追加 Blob 也由块构成,但针对追加操作进行了优化。 追加 Blob 非常适用于诸如记录来自虚拟机的数据之类的场景。
注意
本文中的示例假定你已使用开始使用 Azure Blob 存储和 .NET 一文中的指导创建了一个 BlobServiceClient 对象。 Azure 存储中的 Blob 已组织成容器。 必须先创建容器,才能上传 Blob。 若要了解如何创建容器,请参阅使用 .NET 在 Azure 存储中创建容器。
创建追加 blob 并追加数据
使用这些方法创建追加 blob。
使用以下任一方法将数据追加到该追加 blob:
每个追加操作的最大大小(以字节为单位)由 AppendBlobMaxAppendBlockBytes 属性定义。 以下示例创建一个追加 blob,并将日志数据追加到该 blob。 此示例使用 AppendBlobMaxAppendBlockBytes 属性确定是否需要多个追加操作。
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;
}
}
请参阅
- 了解块 blob、追加 blob 和页 blob
- OpenWrite / OpenWriteAsync
- 追加块 (REST API)