本文共 2582 字,大约阅读时间需要 8 分钟。
MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合存储大容量非结构化数据,如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。一个对象文件可以是任意大小,从几 KB 到最大 5T 不等。
MinIO 的官方文档提供了全面的安装信息。使用 Docker 安装 MinIO 时,可以忽略分布式特性,因为从外部使用的角度看,MinIO 更像一个黑盒子,仅关注与之上传和下载操作,而无需关心其是单机存储还是分布式存储。
docker run -p 9800:9000 --name minioservice \-e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \-e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \-v /mnt/data:/data \-v /mnt/config:/root/.minio \minio/minio server /data
下载 MinIO 镜像并创建一个容器。以下是参数说明:
-p:自定义对外端口,内部保持 9000 即可。-e:设置访问密钥和秘密密钥,默认为 minioadmin。-v:设置数据卷,用于存储数据和配置信息。访问服务器对外 IP 及 MinIO 容器的对外端口(通常为 9800)。MinIO 提供简洁的登录页面,使用创建时设置的访问密钥和秘密密钥或默认账户 minioadmin 登录。
对于 .NET 与 MinIO 的交互,MinIO 提供了完整的 API 和 Nuget 包。安装包即可开始使用。
Install-Package Minio
using MinIO;class Program{ static void Main(string[] args) { var endpoint = "xxx.xxx.xxx.xxx:9800"; var accessKey = "你的accesskey"; var secretKey = "你的secretKey"; try { var minio = new MinioClient(endpoint, accessKey, secretKey); Run(minio).Wait(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } private async static Task Run(MinioClient minio) { var bucketName = "pngs"; var location = "us-east-1"; var objectName = "test.png"; var filePath = @"C:\Users\admin\Desktop\test.png"; var contentType = "image/png"; try { if (!await minio.BucketExistsAsync(bucketName)) { await minio.MakeBucketAsync(bucketName, location); } await minio.PutObjectAsync(bucketName, objectName, filePath, contentType); Console.WriteLine("Successfully uploaded " + objectName); } catch (MinioException e) { Console.WriteLine("File Upload Error: {0}", e.Message); } }} var bucketList = await minio.ListBucketsAsync();
var fileList = minio.ListObjectsAsync(bucketName);
var bucketName = "pngs";var objectName = "test.png";var expiresInt = 604800; // 有效期秒数,最大7天var fileUrl = await minio.PresignedGetObjectAsync(bucketName, objectName, expiresInt);
获取到的 URL 可直接在浏览器中展示,如用于图片展示或文件下载,有效降低业务应用的存储负载。
转载地址:http://xaozz.baihongyu.com/