您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

快速入门:适用于 .NET 的 Azure Blob 存储客户端库 v12

适用于 .NET 的 Azure Blob 存储客户端库 v12 入门。 Azure Blob 存储是 Microsoft 提供的适用于云的对象存储解决方案。 请按照步骤操作,安装程序包并试用基本任务的示例代码。 Blob 存储最适合存储巨量的非结构化数据。

本快速入门中的示例显示如何使用适用于 .NET 的 Azure Blob 存储客户端库 v12 来完成以下操作:

其他资源:

先决条件

设置

本部分逐步指导如何准备一个项目,使其与适用于 .NET 的 Azure Blob 存储客户端库 v12 配合使用。

创建项目

创建名为 BlobQuickstartV12 的 .NET Core 应用程序。

  1. 在控制台窗口(例如 cmd、PowerShell 或 Bash)中,使用 dotnet new 命令创建名为 BlobQuickstartV12 的新控制台应用。 此命令将创建包含单个源文件的简单“Hello World”C# 项目:Program.cs

    dotnet new console -n BlobQuickstartV12
    
  2. 切换到新创建的 BlobQuickstartV12 目录。

    cd BlobQuickstartV12
    
  3. 在 BlobQuickstartV12 目录中,创建名为 data 的另一个目录 。 将在这里创建和存储 blob 数据文件。

    mkdir data
    

安装包

当仍在应用程序目录中时,使用 dotnet add package 命令安装适用于 .NET 包的 Azure Blob 存储客户端库。

dotnet add package Azure.Storage.Blobs

设置应用框架

从项目目录中执行以下操作:

  1. 在编辑器中打开 Program.cs 文件。

  2. 删除 Console.WriteLine("Hello World!"); 语句。

  3. 添加 using 指令。

  4. 更新 Main 方法声明以支持异步。

    代码如下:

    using Azure.Storage.Blobs;
    using Azure.Storage.Blobs.Models;
    using System;
    using System.IO;
    using System.Threading.Tasks;
    
    namespace BlobQuickstartV12
    {
        class Program
        {
            static async Task Main()
            {
            }
        }
    }
    

从 Azure 门户复制凭据

当示例应用程序向 Azure 存储发出请求时,必须对其进行授权。 若要对请求进行授权,请将存储帐户凭据以连接字符串形式添加到应用程序中。 若要查看存储帐户凭据,请按以下步骤操作:

  1. 登录 Azure 门户

  2. 找到自己的存储帐户。

  3. 在存储帐户菜单窗格中的“安全性 + 网络”下,选择“访问密钥” 。 在这里,可以查看帐户访问密钥以及每个密钥的完整连接字符串。

    屏幕截图显示了访问密钥设置在 Azure 门户中的位置

  4. 在“访问密钥”窗格中,选择“显示密钥” 。

  5. 在“key1”部分,找到“连接字符串”值 。 选择“复制到剪贴板”图标来复制该连接字符串。 在下一部分,需将此连接字符串值添加到某个环境变量。

    显示如何从 Azure 门户复制连接字符串的屏幕截图

配置存储连接字符串

在复制连接字符串后,请将其写入到运行该应用程序的本地计算机上的新环境变量。 若要设置环境变量,请打开控制台窗口,并遵照适用于操作系统的说明。 将 <yourconnectionstring> 替换为实际的连接字符串。

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

在 Windows 中添加环境变量后,必须启动命令窗口的新实例。

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

重新启动程序

添加环境变量后,重启需要读取环境变量的任何正在运行的程序。 例如,先重启开发环境或编辑器,然后再继续操作。

对象模型

Azure Blob 存储最适合存储巨量的非结构化数据。 非结构化数据是不遵循特定数据模型或定义的数据(如文本或二进制数据)。 Blob 存储提供了三种类型的资源:

  • 存储帐户
  • 存储帐户中的容器
  • 容器中的 blob

以下图示显示了这些资源之间的关系。

Blob 存储体系结构的图示

使用以下 .NET 类与这些资源进行交互:

  • BlobServiceClientBlobServiceClient 类可用于操纵 Azure 存储资源和 blob 容器。
  • BlobContainerClientBlobContainerClient 类可用于操纵 Azure 存储容器及其 blob。
  • BlobClientBlobClient 类可用于操纵 Azure 存储 blob。

代码示例

以下部分中的示例代码片段显示如何使用适用于 .NET 的 Azure Blob 存储客户端库执行基本数据操作。

获取连接字符串

下面的代码从配置存储连接字符串部分中创建的环境变量中检索存储帐户的连接字符串。

Main 方法内添加此代码:

Console.WriteLine("Azure Blob Storage v12 - .NET quickstart sample\n");

// Retrieve the connection string for use with the application. The storage
// connection string is stored in an environment variable on the machine
// running the application called AZURE_STORAGE_CONNECTION_STRING. If the
// environment variable is created after the application is launched in a
// console or with Visual Studio, the shell or application needs to be closed
// and reloaded to take the environment variable into account.
string connectionString = Environment.GetEnvironmentVariable("AZURE_STORAGE_CONNECTION_STRING");

创建容器

确定新容器的名称。 以下代码将 GUID 值追加到容器名称,确保其是唯一的。

重要

容器名称必须为小写。 有关命名容器和 Blob 的详细信息,请参阅命名和引用容器、Blob 和元数据

创建 BlobServiceClient 类的实例。 然后,调用 CreateBlobContainerAsync 方法在存储帐户中创建容器。

将此代码添加到 Main 方法的末尾:

// Create a BlobServiceClient object which will be used to create a container client
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

//Create a unique name for the container
string containerName = "quickstartblobs" + Guid.NewGuid().ToString();

// Create the container and return a container client object
BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);

将 Blob 上传到容器中

以下代码片段:

  1. 在本地 data 目录中创建文本文件。
  2. 对在创建容器部分创建的容器调用 GetBlobClient 方法,获取对 BlobClient 对象的引用。
  3. 通过调用 UploadAsync 方法将本地文本文件上传到 blob。 此方法将创建 Blob(如果该 Blob 尚不存在),或者覆盖 Blob(如果该 Blob 已存在)。

将此代码添加到 Main 方法的末尾:

// Create a local file in the ./data/ directory for uploading and downloading
string localPath = "./data/";
string fileName = "quickstart" + Guid.NewGuid().ToString() + ".txt";
string localFilePath = Path.Combine(localPath, fileName);

// Write text to the file
await File.WriteAllTextAsync(localFilePath, "Hello, World!");

// Get a reference to a blob
BlobClient blobClient = containerClient.GetBlobClient(fileName);

Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", blobClient.Uri);

// Upload data from the local file
await blobClient.UploadAsync(localFilePath, true);

列出容器中的 Blob

通过调用 GetBlobsAsync 方法,列出容器中的 blob。 在这种情况下,只向容器添加了一个 blob,因此列表操作只返回那个 blob。

将此代码添加到 Main 方法的末尾:

Console.WriteLine("Listing blobs...");

// List all blobs in the container
await foreach (BlobItem blobItem in containerClient.GetBlobsAsync())
{
    Console.WriteLine("\t" + blobItem.Name);
}

下载 blob

通过调用 DownloadToAsync 方法,下载以前创建的 blob。 示例代码将向文件名添加后缀“DOWNLOADED”,这样你就可以在本地文件系统中看到这两个文件。

将此代码添加到 Main 方法的末尾:

// Download the blob to a local file
// Append the string "DOWNLOADED" before the .txt extension 
// so you can compare the files in the data directory
string downloadFilePath = localFilePath.Replace(".txt", "DOWNLOADED.txt");

Console.WriteLine("\nDownloading blob to\n\t{0}\n", downloadFilePath);

// Download the blob's contents and save it to a file
await blobClient.DownloadToAsync(downloadFilePath);

删除容器

以下代码使用 DeleteAsync 来删除整个容器,从而清除该应用所创建的资源。 它还会删除由应用创建的本地文件。

在删除 blob、容器和本地文件之前,应用会调用 Console.ReadLine 以暂停并等待用户输入。 可以通过这种方式验证是否已正确创建资源,然后再删除该资源。

将此代码添加到 Main 方法的末尾:

// Clean up
Console.Write("Press any key to begin clean up");
Console.ReadLine();

Console.WriteLine("Deleting blob container...");
await containerClient.DeleteAsync();

Console.WriteLine("Deleting the local source and downloaded files...");
File.Delete(localFilePath);
File.Delete(downloadFilePath);

Console.WriteLine("Done");

运行代码

此应用在本地 data 文件夹中创建测试文件,并将其上传到 Blob 存储。 然后,该示例会列出容器中的 blob,并使用新名称下载文件,这样便可对新旧文件进行对比。

导航到应用程序目录,然后生成并运行应用程序。

dotnet build
dotnet run

应用的输出类似于以下示例:

Azure Blob Storage v12 - .NET quickstart sample

Uploading to Blob storage as blob:
         https://mystorageacct.blob.core.windows.net/quickstartblobs60c70d78-8d93-43ae-954d-8322058cfd64/quickstart2fe6c5b4-7918-46cb-96f4-8c4c5cb2fd31.txt

Listing blobs...
        quickstart2fe6c5b4-7918-46cb-96f4-8c4c5cb2fd31.txt

Downloading blob to
        ./data/quickstart2fe6c5b4-7918-46cb-96f4-8c4c5cb2fd31DOWNLOADED.txt

Press any key to begin clean up
Deleting blob container...
Deleting the local source and downloaded files...
Done

在开始清理过程之前,请在“data”文件夹中查看这两个文件。 可以打开它们,然后就会观察到它们完全相同。

验证文件后,按 Enter 键以删除测试文件并完成演示。

后续步骤

本快速入门介绍了如何使用 .NET 上传、下载和列出 Blob。

若要查看 Blob 存储示例应用,请继续执行以下操作: