コンテンツへスキップ

BlazorでFileをMinIOにアップロードする方法

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を組み合わせたリッチなアプリケーション開発が可能になります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です