Azure Blob Storageでコードからサブフォルダを作成する方法
Azure Blob Storageでは、サブフォルダを作成するために何かしらのファイルをアップロードする必要があります。以下のコードは、C#を使用してAzure Blob Storageにサブフォルダを作成するサンプルです。あんまり調べても出てこなかったので備忘も兼ねて書きます。
必要なパッケージ
まず、Azure Blob Storageを操作するために必要なパッケージをインストールします。
dotnet add package Azure.Storage.Blobs
コード例
以下のコードは、BlobService
クラスを定義し、サブフォルダを作成するためのメソッド作ります
BlobService.cs
using Azure.Storage.Blobs;
public class BlobService
{
private readonly BlobContainerClient _containerClient;
public BlobService(IConfiguration configuration)
{
//環境変数から取得する
//AppService等使ってる場合はマネージドIDからDefaultAzureCredentialsで取ってきたほうがベター
var connectionString = configuration["AzureBlobStorage:ConnectionString"];
var containerName = configuration["AzureBlobStorage:ContainerName"];
var serviceClient = new BlobServiceClient(connectionString);
_containerClient = serviceClient.GetBlobContainerClient(containerName);
}
//サブフォルダを作るメソッド
//なんでも良いのでファイル入れる必要があります
//ここではcreate.txtを作成しています
public async Task CreateSubFolderAsync(string subFolderName)
{
var blobClient = _containerClient.GetBlobClient($"yourFolder/{subFolderName}/"+"create.txt");
await blobClient.UploadAsync(new MemoryStream(), overwrite: true);
}
}
こんな感じで使います
[HttpPost]
public async Task<IActionResult> CreateFolder(string folderName)
{
if (!string.IsNullOrEmpty(folderName))
{
await _blobService.CreateSubFolderAsync(folderName);
}
return RedirectToAction("Index");
}
説明
-
BlobServiceクラスのコンストラクタ:
-
IConfiguration
を使用して、Azure Blob Storageの接続文字列とコンテナ名を取得します。 -
BlobServiceClient
を作成し、指定されたコンテナのクライアントを取得します。
-
-
CreateSubFolderAsyncメソッド:
- 指定されたサブフォルダを作成するために、
create.txt
という名前のファイルをアップロードします - Azure Blob Storageでは、空のフォルダを作成することができないため、何かしらのファイルをアップロードをする必要があります
- 指定されたサブフォルダを作成するために、
まとめ
Azure Blob Storageでサブフォルダを作成するためには、空のファイルをアップロードする必要があるよ~ということです。
ちなみにこの記事の8割は手元のコードに対してGithub Copilot君にQiitaの記事を書いてと投げて生成されたものです。便利ですね。