Azure.Storage.Blobs 12.21.2

前缀已预留
这里有此包的一个新预发布版本可用。
请查看下方的版本列表以获取详细信息。
dotnet add package Azure.Storage.Blobs --version 12.21.2                
NuGet\Install-Package Azure.Storage.Blobs -Version 12.21.2                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Azure.Storage.Blobs" Version="12.21.2" />                
对于支持 PackageReference 的项目,请将此 XML 节拷贝到项目文件中以便引用此包。
paket add Azure.Storage.Blobs --version 12.21.2                
#r "nuget: Azure.Storage.Blobs, 12.21.2"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。请将此内容拷贝到交互式工具或脚本的源代码中以便引用此包。
// Install Azure.Storage.Blobs as a Cake Addin
#addin nuget:?package=Azure.Storage.Blobs&version=12.21.2

// Install Azure.Storage.Blobs as a Cake Tool
#tool nuget:?package=Azure.Storage.Blobs&version=12.21.2                

.NET 对 Azure 存储 Blob 的客户端库

服务器版本:2021-02-12、2020-12-06、2020-10-02、2020-08-04、2020-06-12、2020-04-08、2020-02-10、2019-12-12、2019-07-07 和 2019-02-02

Azure Blob 存储是微软的云对象存储解决方案。Blob 存储针对存储大量非结构化数据进行了优化。非结构化数据是指不遵循特定数据模型或定义的数据,如文本或二进制数据。

源代码[点击访问] | 包件(NuGet)[点击访问] | API参考文档[点击访问] | REST API文档[点击访问] | 产品文档[点击访问]

入门指南

安装包

使用NuGet[点击访问]安装Azure Storage Blobs客户端库(.NET)

dotnet add package Azure.Storage.Blobs

先决条件

您需要Azure订阅存储帐户才能使用此包。

要创建新的存储帐户,您可以使用Azure门户Azure PowerShellAzure CLI。以下是一个使用Azure CLI的示例

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

认证客户端

为了与Azure Blobs存储服务交互,您需要创建BlobServiceClient类的实例。Azure Identity库[点击访问]使为Azure SDK客户端添加Azure Active Directory认证支持变得简单。

// Create a BlobServiceClient that will authenticate through Active Directory
Uri accountUri = new Uri("https://MYSTORAGEACCOUNT.blob.core.windows.net/");
BlobServiceClient client = new BlobServiceClient(accountUri, new DefaultAzureCredential());

有关在Azure存储中启用Azure Active Directory认证的更多信息,请参阅我们的文档示例

关键概念

Blob存储适用于:

  • 直接向浏览器提供服务或文档。
  • 存储用于分布式访问的文件。
  • 流式传输视频和音频。
  • 写入日志文件。
  • 用于备份和恢复、灾难恢复和存档的数据存储。
  • 用于由本地或Azure托管服务分析的数据存储。

Blob存储提供三种类型资源:

  • 通过BlobServiceClient使用的存储帐户
  • 通过BlobContainerClient使用的存储帐户中的容器
  • 通过BlobClient使用的容器中的blob

有关认证选项的更多信息(包括连接字符串、共享密钥、共享密钥签名、Active Directory和匿名公开访问),请参阅我们的示例。

线程安全

我们保证所有客户端实例方法都是线程安全的且相互独立 (指导方针)。这确保了重用客户端实例的建议总是安全的,即使在多线程中也是如此。

其他概念

客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 模拟 | 客户端生命周期

示例

上传blob

// Get a connection string to our Azure Storage account.  You can
// obtain your connection string from the Azure Portal (click
// Access Keys under Settings in the Portal Storage account blade)
// or using the Azure CLI with:
//
//     az storage account show-connection-string --name <account_name> --resource-group <resource_group>
//
// And you can provide the connection string to your application
// using an environment variable.

string connectionString = "<connection_string>";
string containerName = "sample-container";
string blobName = "sample-blob";
string filePath = "sample-file";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Get a reference to a blob named "sample-file" in a container named "sample-container"
BlobClient blob = container.GetBlobClient(blobName);

// Upload local file
blob.Upload(filePath);

下载blob

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public blob at https://aka.ms/bloburl
new BlobClient(new Uri("https://aka.ms/bloburl")).DownloadTo(downloadPath);

Blob 列表操作

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";
string filePath = "hello.jpg";

// Get a reference to a container named "sample-container" and then create it
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
container.Create();

// Upload a few blobs so we have something to list
container.UploadBlob("first", File.OpenRead(filePath));
container.UploadBlob("second", File.OpenRead(filePath));
container.UploadBlob("third", File.OpenRead(filePath));

// Print out all the blob names
foreach (BlobItem blob in container.GetBlobs())
{
    Console.WriteLine(blob.Name);
}

异步 API

我们完全支持同步和异步 API。

// Get a temporary path on disk where we can download the file
string downloadPath = "hello.jpg";

// Download the public MacBeth copy at https://www.gutenberg.org/cache/epub/1533/pg1533.txt
await new BlobClient(new Uri("https://www.gutenberg.org/cache/epub/1533/pg1533.txt")).DownloadToAsync(downloadPath);

故障排除

所有 Blob 服务操作在失败时,都会抛出 RequestFailedException 异常,并提供有用的 ErrorCode 错误代码。其中许多错误是可恢复的。

// Get a connection string to our Azure Storage account.
string connectionString = "<connection_string>";
string containerName = "sample-container";

// Try to delete a container named "sample-container" and avoid any potential race conditions
// that might arise by checking if the container is already deleted or is in the process
// of being deleted.
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

try
{
    container.Delete();
}
catch (RequestFailedException ex)
    when (ex.ErrorCode == BlobErrorCode.ContainerBeingDeleted ||
          ex.ErrorCode == BlobErrorCode.ContainerNotFound)
{
    // Ignore any errors if the container being deleted or if it has already been deleted
}

下一步

从我们的 Blob 示例 开始

  1. Hello World:上传、下载和列出 blob(或异步
  2. 认证:使用连接字符串、公开访问、共享密钥、共享访问签名和 Azure Active Directory 进行认证。

贡献

有关构建、测试和为该库做出贡献的详细信息,请参阅 Storage CONTRIBUTING.md

本项目欢迎贡献和建议。大多数贡献都需要您同意 contributor license agreement (cla) 声明,您有权利并且确实授予我们使用您贡献的权利。有关详细信息,请访问cla.microsoft.com

本项目已采用 Microsoft Open Source Code of Conduct。有关更多信息,请参阅 Code of Conduct FAQ 或通过 [email protected] 联系以获取任何附加问题或评论。

产品 兼容和额外的计算目标框架版本。
.NET net5.0 已计算。 net5.0-windows 已计算。 net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
.NET Core netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。
.NET Standard netstandard2.0 兼容。 netstandard2.1 兼容。
.NET Framework net461已计算。 net462已计算。 net463已计算。 net47已计算。 net471已计算。 net472已计算。 net48已计算。 net481已计算。
MonoAndroid monoandroid已计算。
MonoMac monomac已计算。
MonoTouch monotouch已计算。
Tizen tizen40已计算。 tizen60已计算。
Xamarin.iOS xamarinios已计算。
Xamarin.Mac xamarinmac已计算。
Xamarin.TVOS xamarintvos已计算。
Xamarin.WatchOS xamarinwatchos已计算。
兼容的目标框架
包含的目标框架(在包中)
更多关于目标框架.NET Standard的信息。

NuGet包 (822)

显示依赖Azure.Storage.Blobs的前5个NuGet包

下载
Microsoft.Azure.WebJobs.Host.Storage

此包包含基于Azure Storage的某些WebJobs SDK组件接口的实现。更多信息,请访问https://go.microsoft.com/fwlink/?linkid=2279708。

Microsoft.Azure.DurableTask.AzureStorage

Azure Storage为Durable Task框架提供的扩展。

Microsoft.Azure.WebJobs.Extensions.Storage.Blobs

该扩展添加了对Storage的支持

Azure.Extensions.AspNetCore.DataProtection.Blobs

支持Microsoft Azure Blob存储作为密钥存储(https://docs.microsoft.com/aspnet/core/security/data-protection/implementation/key-storage-providers)。

AspNetCore.HealthChecks.AzureStorage

HealthChecks.AzureStorage是Blobs、Tables和Queues的健康检查包。

GitHub仓库 (122)

显示依赖于Azure.Storage.Blobs的前5个最受欢迎的GitHub仓库

仓库 星标
bitwarden/server
Bitwarden基础设施/后端(API、数据库、Docker等)。
abpframework/abp
开源Web应用程序框架,用于ASP.NET Core!提供了一项具有偏见架构的方案,可基于.NET的最佳实践构建企业软件解决方案。提供基本基础设施、横切关注点实现、启动模板、应用程序模块、UI主题、工具和文档。
dotnet/AspNetCore.Docs
ASP.NET Core文档
aspnetboilerplate/aspnetboilerplate
ASP.NET Boilerplate - Web应用程序框架
dotnet/orleans
.NET的本地球民应用程序框架
版本 下载 最后更新
12.22.0-beta.1 1,040 8/7/2024
12.21.2 97,113 8/8/2024
12.21.1 354,442 7/25/2024
12.21.0 469,225 7/16/2024
12.21.0-beta.1 10,420 6/11/2024
12.20.0 5,207,157 5/14/2024
12.20.0-beta.2 21,724 4/16/2024
12.20.0-beta.1 178,466 12/5/2023
12.19.1 21,688,720 11/14/2023
12.19.0 941,931 11/6/2023
12.19.0-beta.1 15,321 10/16/2023
12.18.0 8,326,667 9/12/2023
12.18.0-beta.1 37,222 8/8/2023
12.17.0 9,472,173 7/11/2023
12.17.0-beta.1 49,464 5/30/2023
12.16.0 19,832,298 4/11/2023
12.16.0-beta.1 9,317 3/28/2023
12.15.1 3,838,659 3/24/2023
12.15.0 6,406,498 2/22/2023
12.15.0-beta.1 22,064 2/8/2023
12.14.1 23,792,098 10/20/2022
12.14.0 3,116,937 10/12/2022
12.14.0-beta.1 52,087 8/23/2022
12.13.1 19,189,445 8/23/2022
12.13.0 18,489,904 7/8/2022
12.13.0-beta.1 16,788 6/15/2022 12.13.0-beta.1至少有一个中度严重性的漏洞。
12.12.0 14,876,284 5/2/2022 12.12.0至少有一个中度严重性的漏洞。
12.12.0-beta.1 15,908 4/12/2022 12.12.0-beta.1至少有一个中度严重性的漏洞。
12.11.0 5,977,070 3/10/2022 12.11.0至少有一个中度严重性的漏洞。
12.11.0-beta.3 47,749 2/7/2022 12.11.0-beta.3至少有一个中度严重性的漏洞。
12.11.0-beta.2 138,318 11/30/2021 12.11.0-beta.2至少有一个中度严重性的漏洞。
12.11.0-beta.1 22,603 11/4/2021 12.11.0-beta.1至少有一个中度严重性的漏洞。
12.10.0 32,689,509 9/9/2021 12.10.0至少有一个中度严重性的漏洞。
12.10.0-beta.2 23,606 7/23/2021 12.10.0-beta.2 至少存在一个中等严重程度的安全漏洞。
12.10.0-beta.1 5,569 7/23/2021 12.10.0-beta.1 至少存在一个中等严重程度的安全漏洞。
12.9.1 8,493,125 6/23/2021 12.9.1 至少存在一个中等严重程度的安全漏洞。
12.9.0 3,117,172 6/9/2021 12.9.0 至少存在一个中等严重程度的安全漏洞。
12.9.0-beta.4 143,895 5/12/2021 12.9.0-beta.4 至少存在一个中等严重程度的安全漏洞。
12.9.0-beta.3 20,393 4/9/2021 12.9.0-beta.3 至少存在一个中等严重程度的安全漏洞。
12.9.0-beta.2 71,777 3/10/2021 12.9.0-beta.2 至少存在一个中等严重程度的安全漏洞。
12.9.0-beta.1 92,080 2/10/2021 12.9.0-beta.1 至少存在一个中等严重程度的安全漏洞。
12.8.4 2,084,208 5/21/2021 12.8.4 至少存在一个中等严重程度的安全漏洞。
12.8.3 3,165,741 4/27/2021 12.8.3 至少存在一个中等严重程度的安全漏洞。
12.8.2 37,306 4/27/2021 12.8.2 至少存在一个中等严重程度的安全漏洞。
12.8.1 3,634,297 3/29/2021 12.8.1 至少存在一个中等严重程度的安全漏洞。
12.8.0 15,337,998 1/12/2021 12.8.0 至少存在一个中等严重程度的安全漏洞。
12.8.0-beta.1 49,726 12/7/2020 12.8.0-beta.1 至少存在一个中等严重程度的安全漏洞。
12.7.0 8,767,522 11/10/2020 12.7.0 至少存在一个中等严重程度的漏洞。
12.7.0-preview.1 68,226 10/1/2020 12.7.0-preview.1 至少存在一个中等严重程度的漏洞。
12.6.0 11,564,686 8/31/2020 12.6.0 至少存在一个中等严重程度的漏洞。
12.5.1 979,915 8/18/2020 12.5.1 至少存在一个中等严重程度的漏洞。
12.5.0-preview.6 35,929 7/28/2020 12.5.0-preview.6 至少存在一个中等严重程度的漏洞。
12.5.0-preview.5 35,722 7/3/2020 12.5.0-preview.5 至少存在一个中等严重程度的漏洞。
12.5.0-preview.4 6,890 6/19/2020 12.5.0-preview.4 至少存在一个中等严重程度的漏洞。
12.5.0-preview.1 5,816 6/8/2020 12.5.0-preview.1 至少存在一个中等严重程度的漏洞。
12.4.4 7,064,245 6/5/2020 12.4.4 至少存在一个中等严重程度的漏洞。
12.4.3 408,468 6/2/2020 12.4.3 至少存在一个中等严重程度的漏洞。
12.4.2 1,889,685 5/6/2020 12.4.2 至少存在一个中等严重程度的漏洞。
12.4.1 1,644,875 4/6/2020 12.4.1 至少存在一个中等严重程度的漏洞。
12.4.0 1,156,414 3/12/2020 12.4.0 至少存在一个中等严重程度的漏洞。
12.3.0 1,297,197 2/11/2020 12.3.0 至少存在一个中等严重程度的漏洞。
12.2.0 1,156,301 1/10/2020 12.2.0 至少存在一个中等严重程度的漏洞。
12.1.0 737,258 12/4/2019 12.1.0 至少存在一个中等安全风险的漏洞。
12.0.0 1,489,940 10/31/2019 12.0.0 至少存在一个中等安全风险的漏洞。
12.0.0-preview.4 6,157 10/10/2019 12.0.0-preview.4 至少存在一个中等安全风险的漏洞。
12.0.0-preview.3 6,356 9/10/2019 12.0.0-preview.3 至少存在一个中等安全风险的漏洞。
12.0.0-preview.2 3,305 8/6/2019 12.0.0-preview.2 至少存在一个中等安全风险的漏洞。
12.0.0-preview.1 2,847 7/3/2019 12.0.0-preview.1 至少存在一个中等安全风险的漏洞。
1.0.0-preview.1 5,165 5/7/2019 1.0.0-preview.1 至少存在一个中等安全风险的漏洞。