# MinIO 存储服务 **Repository Path**: crazydu/minio-storage ## Basic Information - **Project Name**: MinIO 存储服务 - **Description**: 该项目实现了与 MinIO 对象存储服务的集成,提供了以下功能: 文件上传(支持多文件、流式上传) 文件下载(支持指定对象键、文件类型) 存储桶管理(创建、检查、删除) 预签名 URL 生成(用于上传和下载) 支持多种文件类型和内容类型映射 提供统一的返回结果封装类 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-05 - **Last Updated**: 2026-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MinIO 存储服务 MinIO 是一个高性能、兼容 S3 协议的对象存储服务,专为大规模数据基础设施而设计。本项目提供了一个基于 MinIO 的文件上传和下载服务接口,适用于 .NET 平台的应用程序。 ## 项目介绍 该项目实现了与 MinIO 对象存储服务的集成,提供了以下功能: - 文件上传(支持多文件、流式上传) - 文件下载(支持指定对象键、文件类型) - 存储桶管理(创建、检查、删除) - 预签名 URL 生成(用于上传和下载) - 支持多种文件类型和内容类型映射 - 提供统一的返回结果封装类 主要类和接口包括: - `IMinIOService`:定义了 MinIO 操作的核心接口 - `MinIOService`:MinIO 操作的具体实现类 - `StorageController`:提供 HTTP 接口供外部调用上传、下载等操作 - `MinioOptions`:MinIO 配置类,包含访问密钥、端点等信息 ## 软件架构 本项目基于 .NET Core 构建,采用 MVC 架构模式,主要模块包括: - **控制器层(Controllers)**:提供 RESTful API 接口,处理 HTTP 请求 - **服务层(Services)**:封装 MinIO 的具体操作逻辑 - **模型层(Models)**:定义数据传输对象(DTO)和返回结果封装类 - **配置层(Configuration)**:通过 `appsettings.json` 配置 MinIO 的连接信息 项目使用 `MinioClient` 与 MinIO 服务器进行交互,支持异步操作以提高性能。 ## 安装教程 1. **安装 MinIO 服务器** 下载并运行 MinIO 服务器: ```bash wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio ./minio server /data ``` 2. **配置 MinIO 访问信息** 修改 `appsettings.json` 文件,配置 MinIO 的访问信息: ```json { "MinioOptions": { "Endpoint": "http://localhost:9000", "AccessKey": "YOUR_ACCESS_KEY", "SecretKey": "YOUR_SECRET_KEY" } } ``` 3. **启动 .NET 应用程序** 使用 .NET CLI 启动项目: ```bash dotnet run ``` ## 使用说明 ### 上传文件 使用 `POST /api/Storage/UploadFiles` 接口上传文件: **请求体示例:** ```json { "ProjectCode": "project1", "BucketName": "bucket1", "Files": [ { "ObjectKey": "file1.jpg", "Base64": "base64encodedstring" } ] } ``` ### 下载文件 使用 `GET /api/Storage/{ProjectCode}/{BucketName}/{ObjectKey}` 接口下载文件: ```bash GET /api/Storage/project1/bucket1/file1.jpg ``` ### 获取预签名下载链接 使用 `PresignedGetObject` 方法获取临时下载链接: ```csharp var url = await _minioService.PresignedGetObject("bucket1", "file1.jpg"); ``` ### 创建存储桶 使用 `MakeBucket` 方法创建新的存储桶: ```csharp await _minioService.MakeBucket("new-bucket"); ``` ## 参与贡献 欢迎贡献代码和文档。请遵循以下步骤: 1. Fork 本仓库 2. 创建新分支(feature/your-feature-name) 3. 提交代码 4. 创建 Pull Request ## 开源许可 本项目采用 MIT 许可证。详见 `LICENSE` 文件。