Azure Blob Storage と Visual Studio 接続済みサービスの概要 (ASP.NET)Get started with Azure Blob storage and Visual Studio connected services (ASP.NET)

Azure Blob Storage は、非構造化データをクラウド内にオブジェクトまたは BLOB として格納するサービスです。Azure Blob storage is a service that stores unstructured data in the cloud as objects or blobs. Blob Storage は、ドキュメント、メディア ファイル、アプリケーション インストーラーなど、任意の種類のテキスト データやバイナリ データを格納できます。Blob storage can store any type of text or binary data, such as a document, media file, or application installer. Blob Storage は、オブジェクト ストレージとも呼ばれます。Blob storage is also referred to as object storage.

このチュートリアルでは、Blob Storage を使用するいくつかの一般的なシナリオに対する ASP.NET コードの記述方法について説明します。This tutorial shows how to write ASP.NET code for some common scenarios that use Blob storage. シナリオには、BLOB コンテナーの作成や、BLOB のアップロード、一覧表示、ダウンロード、および削除が含まれます。Scenarios include creating a blob container, and uploading, listing, downloading, and deleting blobs.

ヒント

Azure Storage Explorer を使用して Azure Blob Storage リソースを管理します。Manage Azure Blob storage resources with Azure Storage Explorer. Azure Storage Explorer は、Azure Blob Storage のリソースを管理できる Microsoft 製の無料のスタンドアロン アプリです。Azure Storage Explorer is a free, standalone app from Microsoft that enables you to manage Azure Blob storage resources. Azure Storage Explorer を使用して、BLOB コンテナーおよび BLOB を視覚的に作成、読み取り、更新、削除できるほか、BLOB コンテナーおよび BLOB へのアクセスを管理できます。Using Azure Storage Explorer, you can visually create, read, update, and delete blob containers and blobs, as well as manage access to your blobs containers and blobs.

前提条件Prerequisites

Azure Blob Storage は、Microsoft のクラウド用オブジェクト ストレージ ソリューションです。Azure Blob storage is Microsoft's object storage solution for the cloud. BLOB ストレージは、テキスト データやバイナリ データなどの大量の非構造化データを格納するために最適化されています。Blob storage is optimized for storing massive amounts of unstructured data, such as text or binary data.

BLOB ストレージは、次の目的に最適です。Blob storage is ideal for:

  • 画像またはドキュメントをブラウザーに直接配信する。Serving images or documents directly to a browser.
  • 分散アクセス用にファイルを格納する。Storing files for distributed access.
  • ビデオおよびオーディオをストリーミング配信する。Streaming video and audio.
  • ログ ファイルに書き込む。Writing to log files.
  • バックアップと復元、ディザスター リカバリー、アーカイブのためのデータを格納する。Storing data for backup and restore, disaster recovery, and archiving.
  • オンプレミス サービスまたは Azure ホステッド サービスで分析するデータを格納する。Storing data for analysis by an on-premises or Azure-hosted service.

BLOB ストレージ内のオブジェクトには、世界中のどこからでも HTTP または HTTPS 経由でアクセスできます。Objects in Blob storage can be accessed from anywhere in the world via HTTP or HTTPS. ユーザーまたはクライアント アプリケーションは、URL、Azure Storage REST APIAzure PowerShellAzure CLI、または Azure Storage クライアント ライブラリを介して BLOB にアクセスできます。Users or client applications can access blobs via URLs, the Azure Storage REST API, Azure PowerShell, Azure CLI, or an Azure Storage client library. ストレージ クライアント ライブラリは、.NETJavaNode.jsPythonPHPRuby など、さまざまな言語で利用できます。The storage client libraries are available for multiple languages, including .NET, Java, Node.js, Python, PHP, and Ruby.

Blob service の概念Blob service concepts

BLOB ストレージでは、ストレージ アカウント、アカウント内のコンテナー、およびコンテナー内の BLOB の 3 つのリソースが公開されます。Blob storage exposes three resources: your storage account, the containers in the account, and the blobs in a container. 次の図に、これらのリソースの関係を示します。The following diagram shows the relationship between these resources.

BLOB (オブジェクト) ストレージのアーキテクチャ図

ストレージ アカウントStorage Account

Azure Storage 内のデータ オブジェクトへのアクセスはすべて、ストレージ アカウント経由で行います。All access to data objects in Azure Storage happens through a storage account. 詳細については、「Azure ストレージ アカウントについて」を参照してください。For more information, see About Azure storage accounts.

コンテナーContainer

ファイル システムのフォルダーと同様に、コンテナーを使用して BLOB のセットを整理できます。A container organizes a set of blobs, similar to a folder in a file system. BLOB はすべてコンテナー内に格納されます。All blobs reside within a container. ストレージ アカウントに含めることができるコンテナーの数には制限がなく、1 つのコンテナーに格納できる BLOB の数にも制限はありません。A storage account can contain an unlimited number of containers, and a container can store an unlimited number of blobs. コンテナー名は小文字で入力する必要があります。Note that the container name must be lowercase.

BLOBBlob

Azure Storage が提供する BLOB には、ブロック BLOB、追加 BLOB、およびページ BLOB (VHD ファイルに使用します) の 3 種類があります。Azure Storage offers three types of blobs -- block blobs, append blobs, and page blobs (used for VHD files).

  • ブロック BLOB には、約 4.7 TB までのテキストおよびバイナリ データを格納できます。Block blobs store text and binary data, up to about 4.7 TB. ブロック BLOB は、個別に管理できるデータ ブロックで構成されます。Block blobs are made up of blocks of data that can be managed individually.
  • 追加 BLOB は、ブロック BLOB と同様にブロックで構成されますが、追加操作に最適化されています。Append blobs are made up of blocks like block blobs, but are optimized for append operations. 追加 BLOB は、仮想マシンのデータのログ記録などのシナリオに最適です。Append blobs are ideal for scenarios such as logging data from virtual machines.
  • ページ BLOB には、最大 8 TB のランダム アクセス ファイルを格納できます。Page blobs store random access files up to 8 TB in size. ページ BLOB には、VM に使用される VHD ファイルが格納されます。Page blobs store the VHD files that back VMs.

BLOB はすべてコンテナー内に格納されます。All blobs reside within a container. コンテナーは、ファイル システムのフォルダーに似ています。A container is similar to a folder in a file system. さらに BLOB を仮想ディレクトリに整理して、ファイル システムと同様に走査することができます。You can further organize blobs into virtual directories, and traverse them as you would a file system.

ネットワーク上の制限があるために、有線接続経由で Blob Storage にデータをアップロードまたはダウンロードできない場合は、一連のハード ドライブを Microsoft に送付し、データ センターから直接データをインポートまたはエクスポートできます。For very large datasets where network constraints make uploading or downloading data to Blob storage over the wire unrealistic, you can ship a set of hard drives to Microsoft to import or export data directly from the data center. 詳しくは、「Microsoft Azure Import/Export サービスを使用した BLOB ストレージへのデータの転送」をご覧ください。For more information, see Use the Microsoft Azure Import/Export Service to Transfer Data to Blob Storage.

コンテナーと BLOB の名前付け規則については、「 コンテナー、BLOB、およびメタデータの名前付けおよび参照」を参照してください。For details about naming containers and blobs, see Naming and Referencing Containers, Blobs, and Metadata.

開発環境を設定するSet up the development environment

このセクションでは、開発環境の設定について説明します。This section walks through setting up the development environment. これには、ASP.NET MVC アプリの作成、接続済みサービスの接続の追加、コントローラーの追加、必要な名前空間ディレクティブの指定が含まれます。This includes creating an ASP.NET MVC app, adding a connected services connection, adding a controller, and specifying the required namespace directives.

ASP.NET MVC アプリ プロジェクトを作成するCreate an ASP.NET MVC app project

  1. Visual Studio を開きます。Open Visual Studio.

  2. メイン メニューから、[ファイル] > [新規作成] > [プロジェクト] の順に選択します。From the main menu, select File > New > Project.

  3. [新しいプロジェクト] ダイアログ ボックスで、[Web] > [ASP.NET Web アプリケーション (.NET Framework)] の順に選択します。In the New Project dialog box, select Web > ASP.NET Web Application (.NET Framework). [名前] フィールドで、StorageAspNet を指定します。In the Name field, specify StorageAspNet. [OK] を選択します。Select OK.

    [新しいプロジェクト] ダイアログ ボックスのスクリーンショット

  4. [新しい ASP.NET Web アプリケーション] ダイアログ ボックスで、[MVC] を選択し、[OK] を選択します。In the New ASP.NET Web Application dialog box, select MVC, and then select OK.

    [新しい ASP.NET Web アプリケーション] ダイアログ ボックスのスクリーンショット

接続済みサービスを使用して Azure ストレージ アカウントに接続するUse connected services to connect to an Azure storage account

  1. Solution Explorer で、プロジェクト名を右クリックします。In Solution Explorer, right-click the project.

  2. コンテキスト メニューから、[追加] > [接続済みサービス] の順に選択します。From the context menu, select Add > Connected Service.

  3. [接続済みサービス] ダイアログ ボックスで、[Azure Storage を使用したクラウド ストレージ] を選択します。In the Connected Services dialog box, select Cloud Storage with Azure Storage.

    [接続済みサービス] ダイアログ ボックスのスクリーンショット

  4. [Azure Storage] ダイアログ ボックスで、このチュートリアルで使用する Azure ストレージ アカウントを選択します。In the Azure Storage dialog box, select the Azure storage account to be used for this tutorial. 新しい Azure ストレージ アカウントを作成するには、[新しいストレージ アカウントの作成] を選択し、フォームに入力します。To create a new Azure storage account, select Create a New Storage Account, and complete the form. 既存のストレージ アカウントを選択するか新しいストレージ アカウントを作成したら、[追加] を選択します。After selecting either an existing storage account or creating a new one, select Add. Visual Studio によって Azure Storage 用の NuGet パッケージと Web.config へのストレージ接続文字列がインストールされます。Visual Studio installs the NuGet package for Azure Storage and a storage connection string to Web.config.

ヒント

Azure ポータルでのストレージ アカウントの作成方法については、「ストレージ アカウントの作成」を参照してください。To learn how to create a storage account with the Azure portal, see Create a storage account.

Azure PowerShellAzure CLI、または Azure Cloud Shell を使用してストレージ アカウントを作成することもできます。You can also create a storage account by using Azure PowerShell, Azure CLI, or Azure Cloud Shell.

MVC コントローラーを作成するCreate an MVC controller

  1. ソリューション エクスプローラーで、[コントローラー] を右クリックします。In Solution Explorer, right-click Controllers.

  2. コンテキスト メニューから、[追加] > [コントローラー] の順に選択します。From the context menu, select Add > Controller.

    [追加] と [コントローラー] が強調表示されたソリューション エクスプローラーのスクリーンショット

  3. [スキャフォールディングの追加] ダイアログ ボックスで [MVC 5 コントローラー - 空] を選択し、[追加] を選択します。In the Add Scaffold dialog box, select MVC 5 Controller - Empty, and select Add.

    [スキャフォールディングの追加] ダイアログ ボックスのスクリーンショット

  4. [コントローラーの追加] ダイアログ ボックスで、コントローラーに BlobsController という名前を付けて、[追加] を選択します。In the Add Controller dialog box, name the controller BlobsController, and select Add.

    [コントローラーの追加] ダイアログ ボックスのスクリーンショット

  5. 次の using ディレクティブを BlobsController.cs ファイルに追加します。Add the following using directives to the BlobsController.cs file:

    using Microsoft.Azure;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Blob;
    

ストレージ アカウントに接続してコンテナー参照を取得するConnect to a storage account and get a container reference

BLOB コンテナーとは、BLOB とフォルダーの入れ子になった階層です。A blob container is a nested hierarchy of blobs and folders. このドキュメントの残りの手順では BLOB コンテナーへの参照が必要になるため、再利用のためにコードを独自のメソッドに配置する必要があります。The rest of the steps in this document require a reference to a blob container, so that code should be placed in its own method for reusability.

次の手順で、Web.config 内の接続文字列を使用することでストレージ アカウントに接続するメソッドを作成します。また、コンテナーへの参照も作成します。The following steps create a method to connect to the storage account by using the connection string in Web.config. The steps also create a reference to a container. Web.config に設定する接続文字列は、<storageaccountname>_AzureStorageConnectionString の形式で名前が付けられます。The connection string setting in Web.config is named with the format <storageaccountname>_AzureStorageConnectionString.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. CloudBlobContainer を返す GetCloudBlobContainer と呼ばれるメソッドを追加します。Add a method called GetCloudBlobContainer that returns a CloudBlobContainer. 必ず <storageaccountname>_AzureStorageConnectionStringWeb.config 内の実際のキーの名前に置き換えてください。Be sure to replace <storageaccountname>_AzureStorageConnectionString with the actual name of the key in Web.config.

    private CloudBlobContainer GetCloudBlobContainer()
    {
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                CloudConfigurationManager.GetSetting("<storageaccountname>_AzureStorageConnectionString"));
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference("test-blob-container");
        return container;
    }
    

注意

test-blob-container がまだない場合でも、このコードはこれに対する参照を作成します。 これは、次の手順で示す CreateIfNotExists メソッドを使用して、コンテナーを作成できるようにするためです。

BLOB コンテナーを作成するCreate a blob container

次の手順では、BLOB コンテナーを作成する方法を説明します。The following steps illustrate how to create a blob container:

  1. ActionResult を返す CreateBlobContainer と呼ばれるメソッドを追加します。Add a method called CreateBlobContainer that returns an ActionResult.

    public ActionResult CreateBlobContainer()
    {
        // The code in this section goes here.
    
        return View();
    }
    
  2. 目的の BLOB コンテナー名への参照を表す CloudBlobContainer オブジェクトを取得します。Get a CloudBlobContainer object that represents a reference to the desired blob container name.

    CloudBlobContainer container = GetCloudBlobContainer();
    
  3. CloudBlobContainer.CreateIfNotExists メソッドを呼び出して、まだ存在しない場合はコンテナーを作成します。Call the CloudBlobContainer.CreateIfNotExists method to create the container, if it does not yet exist. CloudBlobContainer.CreateIfNotExists メソッドでは、コンテナーが存在せず、正常に作成された場合は true が返されます。The CloudBlobContainer.CreateIfNotExists method returns true if the container does not exist, and is successfully created. それ以外の場合は、メソッドが false を返します。Otherwise, the method returns false.

    ViewBag.Success = container.CreateIfNotExists();
    
  4. ViewBag を BLOB コンテナーの名前で更新します。Update ViewBag with the name of the blob container.

    ViewBag.BlobContainerName = container.Name;
    

    完成した CreateBlobContainer メソッドを次に示します。The following shows the completed CreateBlobContainer method:

    public ActionResult CreateBlobContainer()
    {
        CloudBlobContainer container = GetCloudBlobContainer();
        ViewBag.Success = container.CreateIfNotExists();
        ViewBag.BlobContainerName = container.Name;
    
        return View();
    }
    
  5. ソリューション エクスプローラーで、[ビュー] フォルダーを右クリックします。In Solution Explorer, right-click the Views folder.

  6. コンテキスト メニューから、[追加] > [新しいフォルダー] の順に選択します。From the context menu, select Add > New Folder. 新しいフォルダーに Blobs という名前を付けます。Name the new folder Blobs.

  7. ソリューション エクスプローラーで、[ビュー] フォルダーを展開し、[BLOB] を右クリックします。In Solution Explorer, expand the Views folder, and right-click Blobs.

  8. コンテキスト メニューから、[追加] > [ビュー] の順に選択します。From the context menu, select Add > View.

  9. [ビューの追加] ダイアログ ボックスで、ビューの名前として「CreateBlobContainer」と入力し、[追加] を選択します。In the Add View dialog box, enter CreateBlobContainer for the view name, and select Add.

  10. CreateBlobContainer.cshtml を開き、次のコード スニペットのように変更します。Open CreateBlobContainer.cshtml, and modify it so that it looks like the following code snippet:

    @{
        ViewBag.Title = "Create Blob Container";
    }
    
    <h2>Create Blob Container results</h2>
    
    Creation of @ViewBag.BlobContainerName @(ViewBag.Success == true ? "succeeded" : "failed")
    
  11. ソリューション エクスプローラーで、[ビュー] > [共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In Solution Explorer, expand the Views > Shared folder, and open _Layout.cshtml.

  12. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Create blob container", "CreateBlobContainer", "Blobs")</li>
    
  13. アプリケーションを実行して [BLOB コンテナーの作成] を選択し、次のスクリーン ショットと同様の結果が表示されることを確認します。Run the application, and select Create Blob Container to see results similar to the following screenshot:

    BLOB コンテナーの作成のスクリーンショット

    前述したように、CloudBlobContainer.CreateIfNotExists メソッドは、コンテナーが存在しないために作成された場合にのみ true を返します。As mentioned previously, the CloudBlobContainer.CreateIfNotExists method returns true only when the container doesn't exist and is created. そのため、コンテナーが存在するときにアプリを実行した場合、メソッドは false を返します。Therefore, if the app is run when the container exists, the method returns false.

BLOB コンテナーに BLOB をアップロードするUpload a blob into a blob container

BLOB コンテナーの作成が終わったら、そのコンテナーにファイルをアップロードします。When the blob container is created, upload files into that container. このセクションでは、ローカル ファイルを BLOB コンテナーにアップロードする手順を説明します。This section walks through uploading a local file to a blob container. この手順では、test-blob-container という名前の BLOB コンテナーがあることを前提としています。The steps assume there is a blob container named test-blob-container.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. 文字列を返す UploadBlob と呼ばれるメソッドを追加します。Add a method called UploadBlob that returns a string.

    public string UploadBlob()
    {
        // The code in this section goes here.
    
        return "success!";
    }
    
  3. UploadBlob メソッドの中で、目的の BLOB コンテナー名への参照を表す CloudBlobContainer オブジェクトを取得します。Within the UploadBlob method, get a CloudBlobContainer object that represents a reference to the desired blob container name.

    CloudBlobContainer container = GetCloudBlobContainer();
    
  4. Azure ストレージはさまざまな種類の BLOB に対応しています。Azure storage supports different blob types. このチュートリアルでは、 ブロック BLOB を使用します。This tutorial uses block blobs. ブロック BLOB への参照を取得するには、CloudBlobContainer.GetBlockBlobReference メソッドを呼び出します。To retrieve a reference to a block blob, call the CloudBlobContainer.GetBlockBlobReference method.

    CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
    

    注意

    BLOB 名は BLOB を取得するために使用される URL の一部であり、任意の文字列にすることができ、ファイルの名前も使用できます。

  5. BLOB の参照を取得したら、BLOB 参照オブジェクトの UploadFromStream メソッドを呼び出すことで、データの任意のストリームを BLOB にアップロードできます。After there is a blob reference, you can upload any data stream to it by calling the blob reference object's UploadFromStream method. UploadFromStream メソッドは、BLOB が存在しない場合は作成し、存在する場合は上書きします The UploadFromStream method creates the blob if it doesn't exist, or overwrites it if it does exist. (<file-to-upload> を、アップロードするファイルへの完全修飾パスに変更します)。(Change <file-to-upload> to a fully qualified path to a file to be uploaded.)

    using (var fileStream = System.IO.File.OpenRead(@"<file-to-upload>"))
    {
        blob.UploadFromStream(fileStream);
    }
    

    完成した UploadBlob メソッド (アップロードするファイルの完全修飾パス指定あり) を次に示します。The following shows the completed UploadBlob method (with a fully qualified path for the file to be uploaded):

    public string UploadBlob()
    {
        CloudBlobContainer container = GetCloudBlobContainer();
        CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
        using (var fileStream = System.IO.File.OpenRead(@"c:\src\sample.txt"))
        {
            blob.UploadFromStream(fileStream);
        }
        return "success!";
    }
    
  6. ソリューション エクスプローラーで、[ビュー] > [共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In Solution Explorer, expand the Views > Shared folder, and open _Layout.cshtml.

  7. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Upload blob", "UploadBlob", "Blobs")</li>
    
  8. アプリケーションを実行し、[BLOB のアップロード] を選択します。Run the application, and select Upload blob. success! という単語がThe word success! 表示されます。should appear.

    成功の検証のスクリーンショット

BLOB コンテナー内の BLOB を一覧表示するList the blobs in a blob container

このセクションでは、BLOB コンテナー内の BLOB を一覧表示する方法について説明します。This section illustrates how to list the blobs in a blob container. サンプル コードでは、セクション「BLOB コンテナーを作成する」で作成された test-blob-container を参照します。The sample code references the test-blob-container created in the section, Create a blob container.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. ActionResult を返す ListBlobs と呼ばれるメソッドを追加します。Add a method called ListBlobs that returns an ActionResult.

    public ActionResult ListBlobs()
    {
        // The code in this section goes here.
    
    }
    
  3. ListBlobs メソッドの中で、BLOB コンテナーへの参照を表す CloudBlobContainer オブジェクトを取得します。Within the ListBlobs method, get a CloudBlobContainer object that represents a reference to the blob container.

    CloudBlobContainer container = GetCloudBlobContainer();
    
  4. コンテナー内の BLOB を一覧表示するには、CloudBlobContainer.ListBlobs メソッドを使用します。To list the blobs in a blob container, use the CloudBlobContainer.ListBlobs method. CloudBlobContainer.ListBlobs メソッドは、CloudBlockBlobCloudPageBlob、または CloudBlobDirectory オブジェクトにキャストできる IListBlobItem オブジェクトを返します。The CloudBlobContainer.ListBlobs method returns an IListBlobItem object that can be cast to a CloudBlockBlob, CloudPageBlob, or CloudBlobDirectory object. 次のコード スニペットでは、BLOB コンテナー内のすべての BLOB を列挙します。The following code snippet enumerates all the blobs in a blob container. 各 BLOB は、その型に応じて適切なオブジェクトにキャストされます。Each blob is cast to the appropriate object, based on its type. その名前 (CloudBlobDirectory の場合は URI) が一覧に追加されます。Its name (or URI in the case of a CloudBlobDirectory) is added to a list.

    List<string> blobs = new List<string>();
    
    foreach (IListBlobItem item in container.ListBlobs())
    {
        if (item.GetType() == typeof(CloudBlockBlob))
        {
            CloudBlockBlob blob = (CloudBlockBlob)item;
            blobs.Add(blob.Name);
        }
        else if (item.GetType() == typeof(CloudPageBlob))
        {
            CloudPageBlob blob = (CloudPageBlob)item;
            blobs.Add(blob.Name);
        }
        else if (item.GetType() == typeof(CloudBlobDirectory))
        {
            CloudBlobDirectory dir = (CloudBlobDirectory)item;
            blobs.Add(dir.Uri.ToString());
        }
    }
    
    return View(blobs);
    

    BLOB コンテナーには BLOB だけでなく、ディレクトリを含めることもできます。In addition to blobs, blob containers can contain directories. 次のような階層の、test-blob-container という BLOB コンテナーがあるとします。Suppose there is a blob container called test-blob-container, with the following hierarchy:

     foo.png
     dir1/bar.png
     dir2/baz.png
    

    前のコード例を使用すると、BLOB 文字列リストには、次のような値が含まれます。Using the preceding code example, the blobs string list contains values similar to the following:

     foo.png
     <storage-account-url>/test-blob-container/dir1
     <storage-account-url>/test-blob-container/dir2
    

    このように、リストには最上位のエンティティのみが含まれ、入れ子になったエンティティ (bar.pngbaz.png) は含まれていません。As shown, the list includes only the top-level entities, not the nested ones (bar.png and baz.png). BLOB コンテナー内のすべてのエンティティを一覧表示するには、CloudBlobContainer.ListBlobs メソッドが useFlatBlobListing パラメーターに true を渡すようにコードを変更します。To list all the entities within a blob container, change the code so that the CloudBlobContainer.ListBlobs method is passed true for the useFlatBlobListing parameter.

    //...
    foreach (IListBlobItem item in container.ListBlobs(useFlatBlobListing:true))
    //...
    

    useFlatBlobListing パラメーターを true に設定すると、BLOB コンテナー内のすべてのエンティティのフラットな一覧が返されます。Setting the useFlatBlobListing parameter to true returns a flat listing of all entities in the blob container. 次の結果が生成されます。This yields the following results:

     foo.png
     dir1/bar.png
     dir2/baz.png
    

    完成した ListBlobs メソッドを次に示します。The following shows the completed ListBlobs method:

    public ActionResult ListBlobs()
    {
        CloudBlobContainer container = GetCloudBlobContainer();
        List<string> blobs = new List<string>();
        foreach (IListBlobItem item in container.ListBlobs(useFlatBlobListing: true))
        {
            if (item.GetType() == typeof(CloudBlockBlob))
            {
                CloudBlockBlob blob = (CloudBlockBlob)item;
                blobs.Add(blob.Name);
            }
            else if (item.GetType() == typeof(CloudPageBlob))
            {
                CloudPageBlob blob = (CloudPageBlob)item;
                blobs.Add(blob.Name);
            }
            else if (item.GetType() == typeof(CloudBlobDirectory))
            {
                CloudBlobDirectory dir = (CloudBlobDirectory)item;
                blobs.Add(dir.Uri.ToString());
            }
        }
    
        return View(blobs);
    }
    
  5. ソリューション エクスプローラーで、[ビュー] フォルダーを展開し、[BLOB] を右クリックします。In Solution Explorer, expand the Views folder, and right-click Blobs.

  6. コンテキスト メニューから、[追加] > [ビュー] の順に選択します。From the context menu, select Add > View.

  7. [ビューの追加] ダイアログ ボックスで、ビューの名前として「ListBlobs」と入力し、[追加] を選択します。In the Add View dialog box, enter ListBlobs for the view name, and select Add.

  8. ListBlobs.cshtml を開き、内容を次のコードに置き換えます。Open ListBlobs.cshtml, and replace the contents with the following code:

    @model List<string>
    @{
        ViewBag.Title = "List blobs";
    }
    
    <h2>List blobs</h2>
    
    <ul>
        @foreach (var item in Model)
        {
        <li>@item</li>
        }
    </ul>
    
  9. ソリューション エクスプローラーで、[ビュー] > [共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In Solution Explorer, expand the Views > Shared folder, and open _Layout.cshtml.

  10. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("List blobs", "ListBlobs", "Blobs")</li>
    
  11. アプリケーションを実行して [BLOB の一覧表示] を選択し、次のスクリーン ショットと同様の結果が表示されることを確認します。Run the application, and select List blobs to see results similar to the following screenshot:

    [BLOB の一覧表示] のスクリーンショット

BLOB をダウンロードするDownload blobs

このセクションでは、BLOB をダウンロードする方法について説明します。This section illustrates how to download a blob. BLOB はローカル ストレージに保存するか、その内容を文字列に読み取ることができます。You can either persist it to local storage or read the contents into a string. サンプル コードでは、セクション「BLOB コンテナーを作成する」で作成された test-blob-container を参照します。The sample code references the test-blob-container created in the section, Create a blob container.

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. 文字列を返す DownloadBlob と呼ばれるメソッドを追加します。Add a method called DownloadBlob that returns a string.

    public string DownloadBlob()
    {
        // The code in this section goes here.
    
        return "success!";
    }
    
  3. DownloadBlob メソッドの中で、BLOB コンテナーへの参照を表す CloudBlobContainer オブジェクトを取得します。Within the DownloadBlob method, get a CloudBlobContainer object that represents a reference to the blob container.

    CloudBlobContainer container = GetCloudBlobContainer();
    
  4. CloudBlobContainer.GetBlockBlobReference メソッド呼び出して BLOB 参照オブジェクトを取得します。Get a blob reference object by calling the CloudBlobContainer.GetBlockBlobReference method.

    CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
    
  5. BLOB をダウンロードするには、CloudBlockBlob.DownloadToStream メソッドを使用します。To download a blob, use the CloudBlockBlob.DownloadToStream method. 次のコードは、BLOB の内容をストリーム オブジェクトに転送します。The following code transfers a blob's contents to a stream object. そのオブジェクトはローカル ファイルに保存されます。That object is then persisted to a local file. (<local-file-name> を、BLOB がダウンロードされる場所を表す完全修飾ファイル名に変更します。)(Change <local-file-name> to the fully qualified file name representing where the blob is to be downloaded.)

    using (var fileStream = System.IO.File.OpenWrite(<local-file-name>))
    {
        blob.DownloadToStream(fileStream);
    }
    

    完成した ListBlobs メソッド (作成されるローカル ファイルの完全修飾パス指定あり) を次に示します。The following shows the completed ListBlobs method (with a fully qualified path for the local file being created):

    public string DownloadBlob()
    {
        CloudBlobContainer container = GetCloudBlobContainer();
        CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
        using (var fileStream = System.IO.File.OpenWrite(@"c:\src\downloadedBlob.txt"))
        {
            blob.DownloadToStream(fileStream);
        }
        return "success!";
    }
    
  6. ソリューション エクスプローラーで、[ビュー] > [共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In Solution Explorer, expand the Views > Shared folder, and open _Layout.cshtml.

  7. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Download blob", "DownloadBlob", "Blobs")</li>
    
  8. アプリケーションを実行し、[BLOB のダウンロード] を選択して、BLOB をダウンロードします。Run the application, and select Download blob to download the blob. CloudBlobContainer.GetBlockBlobReference メソッドの呼び出しで指定された BLOB が File.OpenWrite メソッドの呼び出しで指定された場所にダウンロードされます。The blob specified in the CloudBlobContainer.GetBlockBlobReference method call downloads to the location specified in the File.OpenWrite method call. success! というテキストがThe text success! ブラウザーに表示されます。should appear in the browser.

BLOB を削除するDelete blobs

次の手順では、BLOB を削除する方法を説明します。The following steps illustrate how to delete a blob:

  1. BlobsController.cs ファイルを開きます。Open the BlobsController.cs file.

  2. 文字列を返す DeleteBlob と呼ばれるメソッドを追加します。Add a method called DeleteBlob that returns a string.

    public string DeleteBlob()
    {
        // The code in this section goes here.
    
        return "success!";
    }
    
  3. DeleteBlob メソッドの中で、BLOB コンテナーへの参照を表す CloudBlobContainer オブジェクトを取得します。Within the DeleteBlob method, get a CloudBlobContainer object that represents a reference to the blob container.

    CloudBlobContainer container = GetCloudBlobContainer();
    
  4. CloudBlobContainer.GetBlockBlobReference メソッド呼び出して BLOB 参照オブジェクトを取得します。Get a blob reference object by calling the CloudBlobContainer.GetBlockBlobReference method.

    CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
    
  5. BLOB を削除するには、Delete メソッドを使用します。To delete a blob, use the Delete method.

    blob.Delete();
    

    完成した DeleteBlob メソッドは次のようになります。The completed DeleteBlob method should appear as follows:

    public string DeleteBlob()
    {
        CloudBlobContainer container = GetCloudBlobContainer();
        CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
        blob.Delete();
        return "success!";
    }
    
  6. ソリューション エクスプローラーで、[ビュー] > [共有] フォルダーを順に展開し、_Layout.cshtml を開きます。In Solution Explorer, expand the Views > Shared folder, and open _Layout.cshtml.

  7. 最後の Html.ActionLink の後に、次の Html.ActionLink を追加します。After the last Html.ActionLink, add the following Html.ActionLink:

    <li>@Html.ActionLink("Delete blob", "DeleteBlob", "Blobs")</li>
    
  8. アプリケーションを実行し、[BLOB の削除] を選択して、CloudBlobContainer.GetBlockBlobReference メソッドの呼び出しで指定された BLOB を削除します。Run the application, and select Delete blob to delete the blob specified in the CloudBlobContainer.GetBlockBlobReference method call. success! というテキストがThe text success! ブラウザーに表示されます。should appear in the browser. ブラウザーの [戻る] ボタンを選択し、[BLOB の一覧表示] を選択して、BLOB がコンテナーに存在しないことを確認します。Select the browser's Back button, and then select List blobs to verify that the blob is no longer in the container.

次の手順Next steps

このチュートリアルでは、ASP.NET を使用することで、Azure Storage に対して BLOB を格納、一覧表示、取得する方法について学習しました。In this tutorial, you learned how to store, list, and retrieve blobs in Azure Storage by using ASP.NET. Azure でデータを格納するための追加のオプションについては、他の機能ガイドも参照してください。View more feature guides to learn about additional options for storing data in Azure.