Azure Blob 存储是用于大量存储非结构化数据(例如文本数据或二进制数据)的 Microsoft 应用程序存储解决方案。Azure Blob 存储适用于存储任何类型的文本或二进制数据,例如:
- 图片和视频文件
- Web 应用程序生成的日志文件
- 传感器生成的数据流
- 静态网站的内容(例如 HTML 和 JavaScript 文件)
一、Azure Blob 存储连接
1、获取 Azure Blob 存储连接字符串
要在代码中访问 Azure Blob 存储,需要使用连接字符串。可以通过以下步骤来获取连接字符串:
- 在 Azure 门户中,转到存储帐户。
- 单击“访问密钥”,然后复制“连接字符串”。
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("连接字符串");
2、创建 Blob 客户端对象
要访问 Blob 存储,需要使用 CloudBlobClient 对象。可以使用以下代码创建 CloudBlobClient 对象:
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
3、获取 Blob 容器引用
Blob 容器是 Blob 存储中的逻辑容器,可用于组织 Blob。可以使用以下代码获取 Blob 容器的引用:
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
二、Azure Blob 存储操作
1、上传 Blob
可以使用 CloudBlockBlob 对象的 UploadFromStreamAsync 方法将文件上传到 Blob 存储中:
CloudBlockBlob blob = container.GetBlockBlobReference("myblob");
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes("blob 理论大小")))
{
await blob.UploadFromStreamAsync(stream);
}
2、下载 Blob
可以使用 CloudBlockBlob 对象的 DownloadToStreamAsync 方法将文件从 Blob 存储下载到流中:
CloudBlockBlob blob = container.GetBlockBlobReference("myblob");
using (var stream = new MemoryStream())
{
await blob.DownloadToStreamAsync(stream);
var content = Encoding.UTF8.GetString(stream.ToArray());
}
3、删除 Blob
可以使用 CloudBlockBlob 对象的 DeleteIfExistsAsync 方法删除 Blob:
CloudBlockBlob blob = container.GetBlockBlobReference("myblob");
await blob.DeleteIfExistsAsync();
4、列举 Blob
可以使用 CloudBlobContainer 对象的 ListBlobsSegmentedAsync 方法列举 Blob 容器中的所有 Blob:
BlobContinuationToken continuationToken = null;
do
{
var resultSegment = await container.ListBlobsSegmentedAsync(null, continuationToken);
continuationToken = resultSegment.ContinuationToken;
foreach (IListBlobItem item in resultSegment.Results)
{
if (item is CloudBlockBlob blob)
{
// Process the block blob.
}
}
} while (continuationToken != null);
三、Azure Blob 存储时长
1、上传 Blob 时间
上传 Blob 的时间取决于文件的大小和上传的带宽。
2、下载 Blob 时间
下载 Blob 的时间取决于 Blob 的大小和下载的带宽。
3、删除 Blob 时间
删除 Blob 的时间取决于容器中 Blob 的数量和删除操作的时间。