BlazorでFileをMinIOにアップロードする方法
BlazorアプリケーションからMinIOオブジェクトストレージへファイルをアップロードするプロセスは、比較的シンプルで直感的です。本記事では、BlazorアプリケーションでファイルをMinIOにアップロードするための手順を詳しく解説します。主に、Program.cs
でMinIOクライアントをDI(依存性注入)に登録する方法と、RazorコンポーネントでMinIOクライアントを使用してファイルをアップロードする方法に焦点を当てます。
1. Program.cs
でMinIOをDIへ登録
BlazorサーバーアプリケーションでMinIOクライアントを依存性注入するためには、まずProgram.cs
に設定を記述する必要があります。以下のスニペットは、appsettings.json
からMinIOの設定を読み込み、サービスコレクションにMinIOクライアントを登録する方法を示しています。
using Minio;
// Minioの追加
var minioConfig = builder.Configuration.GetSection("MinioConfig").Get<MinioConfig>();
builder.Services.AddMinio(configureClient => configureClient
.WithEndpoint(minioConfig?.Endpoint)
.WithCredentials(minioConfig?.AccessKey, minioConfig?.SecretKey)
.WithSSL(minioConfig.Secure)
.Build());
public class MinioConfig
{
public string Endpoint { get; set; }
public string AccessKey { get; set; }
public string SecretKey { get; set; }
public bool Secure { get; set; }
}
appsettings.json
の設定例:
"MinioConfig": {
"Endpoint": "minio.com:9000",
"AccessKey": "minio_user",
"SecretKey": "abcz",
"Secure": true
}
この設定により、アプリケーション全体でMinIOクライアントを利用できるようになります。
2. Razor側で使用する
MinIOクライアントをRazorページやコンポーネントで使用するには、まずDIからインスタンスを注入します。
@inject IMinioClient minioClient;
次に、ファイルアップロードのロジックを実装します。以下の例では、ユーザーが選択したファイルをStream
として読み込み、MinIOの指定されたバケットにアップロードしています。
private const string bucketName = "BucketName";
Stream s = SelectFile.File.OpenReadStream(SelectFile.FileSize);
var putObjectArgs = new PutObjectArgs()
.WithBucket(bucketName)
.WithStreamData(s)
.WithContentType(SelectFile.File.ContentType)
.WithObjectSize(s.Length)
.WithObject(guid.ToString())
;
await minioClient.PutObjectAsync(putObjectArgs).ConfigureAwait(false);
このスニペットでは、SelectFile
はユーザーが選択したファイルを表し、PutObjectAsync
メソッドを使用してMinIOバケットにアップロードしています。ファイルのコンテントタイプ、サイズ、および一意のオブジェクト名(この例ではguid.ToString()
を使用)を指定することが重要です。
以上で、BlazorアプリケーションからMinIOにファイル
をMinIOにアップロードする基本的な流れが完了しました。この手順を通じて、BlazorとMinIOを組み合わせたリッチなアプリケーション開発が可能になります。