C#怎么操作Azure Blob Storage Azure存储SDK使用方法

来源:这里教程网 时间:2026-02-21 17:37:23 作者:

用 C# 操作 Azure Blob Storage,核心是使用 Azure SDK for .NET(即

Azure.Storage.Blobs
包),它比旧版
Microsoft.Azure.Storage.Blob
更现代、更轻量、更符合 .NET 标准。下面直接讲清楚怎么上手、怎么写关键代码。

安装 SDK 并初始化客户端

在项目中通过 NuGet 安装最新稳定版:

Install-Package Azure.Storage.Blobs

拿到存储账户的连接字符串(或账户名+密钥/Token)后,创建

BlobServiceClient

用连接字符串(开发/测试常用):
var connectionString = "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net";
var serviceClient = new BlobServiceClient(connectionString);
用账户名 + 共享密钥(更安全,推荐生产环境):
var credential = new StorageSharedKeyCredential("myaccount", "mykey");
var serviceClient = new BlobServiceClient(new Uri("https://myaccount.blob.core.windows.net"), credential);

创建容器并设置访问级别

Blob 必须存放在容器(Container)里。默认容器是私有(private)的,如需公开读取(比如放静态资源),要显式设为

BlobContainerPublicAccessType.Blob

var containerClient = serviceClient.GetBlobContainerClient("mycontainer");
await containerClient.CreateIfNotExistsAsync(PublicAccessType.Blob); // 允许匿名读 blob
PublicAccessType.None
:仅授权用户可访问(默认)
PublicAccessType.Container
:可匿名列容器内 blob 列表
PublicAccessType.Blob
:可匿名读单个 blob(最常用)

上传、下载和删除 Blob

操作单个文件(blob)时,用

GetBlobClient
获取具体 blob 引用:

上传本地文件:
var blobClient = containerClient.GetBlobClient("photos/cat.jpg");
await blobClient.UploadAsync("D:\cat.jpg", new BlobHttpHeaders { ContentType = "image/jpeg" });
上传字节数组或流(适合内存中生成的内容):
await blobClient.UploadAsync(stream, new BlobHttpHeaders { ContentType = "text/plain" });
下载到本地文件:
await blobClient.DownloadToAsync("D:\downloaded-cat.jpg");
删除 blob:
await blobClient.DeleteIfExistsAsync();

列出 Blob 和处理大文件

批量操作用

GetBlobsAsync
,支持分页和前缀过滤:

await foreach (var blob in containerClient.GetBlobsAsync(prefix: "logs/2024-06-"))
{
    Console.WriteLine(blob.Name);
}

上传超大文件(如 >256MB)建议用分块上传(

StartUploadAsync
+
StageBlockAsync
+
CommitBlockListAsync
),但一般场景直接用
UploadAsync
即可——SDK 内部会自动分块处理。

基本上就这些。关键点:用对 SDK 包、连对凭证、设对容器权限、传对 ContentType。不复杂但容易忽略细节,比如忘了设 public access 就无法外网访问,或者没加 ContentType 导致浏览器下载而非预览。

相关推荐