使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务

🚀 使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务

本文基于 ABP vNext + MinIO 的对象存储集成实践,系统讲解从 MinIO 部署、桶创建、ABP 集成、上传 API、安全校验、预签名访问,到测试、扩展及多租户支持的全过程。目标是构建一套可复现、可维护、可扩展的企业级文件存储服务。



📘 背景与目标

非结构化数据(图片、视频、PDF 等)管理是现代应用中的常见需求,尤其在多租户系统中,对存储隔离、安全、预览等能力要求更高。ABP vNext 提供了 BlobStoring 模块,MinIO 提供 S3 兼容的存储服务,两者结合可构建灵活高可用的文件服务系统。


🏗 技术架构与依赖

  • 框架:ABP vNext
  • 对象存储:MinIO(兼容 S3)
  • NuGet 依赖
    • Volo.Abp.BlobStoring.AmazonS3
    • AWSSDK.S3
  • 部署方式:Docker 容器部署 MinIO

🏗️ 系统架构流程图

Web 客户端
API 控制器
上传服务 (FileAppService)
容器 (IDemoBlobContainer)
MinIO Server

🔧 MinIO部署与桶准备

docker run -d -p 9000:9000 -p 9001:9001 \
  --name minio \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=admin123 \
  -v /data/minio:/data \
  minio/minio server /data --console-address ":9001"

📍 管理控制台:http://localhost:9001
🔐 用户密码:admin / admin123
📦 桶名(Bucket):demo-bucket(可手动或代码创建)


🛠 集成 MinIO 到 ABP 项目

1️⃣ 安装 NuGet 包

dotnet add package Volo.Abp.BlobStoring.AmazonS3
dotnet add package AWSSDK.S3

2️⃣ 配置 appsettings.json

"Abp": {
   
   
  "BlobStoring": {
   
   
    "AmazonS3": {
   
   
      "AccessKey": "admin",
      "SecretKey": "admin123",
      "RegionEndpoint": "us-east-1",
      "BucketName": "demo-bucket",
      "ServiceUrl": "http://localhost:9000",
      "ForcePathStyle": true
    }
  }
},
"BlobStorage": {
   
   
  "BasePreviewUrl": "http://localhost:9000/demo-bucket/"
}

3️⃣ 模块注册 + 自动建桶

public class BlobStorageOptions
{
   
   
    public string BasePreviewUrl {
   
    get; set; } = string.Empty;
}

public class DemoApplicationModule : AbpModule
{
   
   
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
   
   
        var config = context.Services.GetConfiguration();
        context.Services.Configure<BlobStorageOptions>(config.GetSection("BlobStorage"));

        context.Services.AddSingleton<IAmazonS3>(_ =>
            new AmazonS3Client("admin", "admin123", new AmazonS3Config
            {
   
   
                ServiceURL = "http://localhost:9000",
                ForcePathStyle = true
            }));

        context.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kookoos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值