手把手教你搭建一个文件存储服务器minio,实现文件存储

Minio是一个开源的、自托管的对象存储服务器,它提供了类似于云存储服务的功能。你可以使用Minio搭建自己的私有云存储解决方案,或者作为公共存储服务的替代方案。

安装

官网:https://min.io/download

根据官网内容进行安装即可。笔者采用windos 本地安装的方式

9e75c0375e7e0efe18ab8f87e09b94d5.png

安装好后就能看到账号和密码了。默认的为 miniadmin 登录地址为:http://127.0.0.1:9001/

默认的管理控制台端口是9001 客户端的请求的端口是9000

PS> setx MINIO_ROOT_USER admin
PS> setx MINIO_ROOT_PASSWORD 123456 ps> minio.exe server D:\minio\Data --console-address ":9001"

327b6206c402ae7ebb65e57af7211975.png 8227a7d16550d705ea148f3eb6c58826.png

知识点

  • • Bucket(存储桶):Bucket 是 Minio 的最顶层命名空间,类似于文件系统中的文件夹。在 Minio 中,你可以创建多个 Bucket 来组织和管理对象。

  • • Object(对象):Object 是 Minio 存储的实际数据单元。每个 Object 可以是任意大小的文件,通常由文件内容、元数据和一个唯一标识符(Object Key)组成。

  • • Object Key(对象键):Object Key 是每个 Object 的唯一标识符,用于区分不同的 Object。它类似于文件系统中的文件路径,由目录结构和文件名称组成,例如 "photos/2021/image.jpg"

  • • Presigned URL(预签名URL):Presigned URL 是一种带有临时访问权限的 URL,通过该 URL 可以让用户在一定时间内对特定的 Object 进行读取、写入、删除等操作。这对于授权临时访问非常有用,比如与其他用户共享文件或资源。

  • • Access Key 和 Secret Key(访问密钥):Access Key 和 Secret Key 是用于身份验证的凭据。Access Key 用于标识用户或应用程序,而 Secret Key 则用于进行身份验证。这些凭据需要在使用 Minio 客户端或访问 Minio API 时进行配置。

  • • Region(区域):Region 是用来表示存储桶(Bucket)在物理位置上的分布。Minio 支持将数据存储在不同的区域,以实现高可用性和数据冗余。

  • • Encryption(加密):Minio 提供了对 Bucket 和 Object 的服务器端加密功能。可以使用客户端提供的加密选项,将数据在上传到 Minio 之前进行加密,以保证数据的机密性。

  • • Endpoint 对象存储服务的URL

使用

最简单的办法参考Asp.Net Core 5.0/6.0对象储存扩展包,支持Minio自建对象储存、阿里云OSS、腾讯云COS、七牛云Kodo。支持OSS常规操作,比如储存桶创建,删除、对象上传、下载、生成签名URL等。支持.NET 5/6,也推荐升级至.NET 5/6.

DotNet官方示例

static void Main(string[] args)
        {
            var endpoint = "play.min.io";
            var accessKey = "Q3AM3UQ867SPQQA43P2F";
            var secretKey = "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG";
            try
            {
                var minio = new MinioClient()
                                    .WithEndpoint(endpoint)
                                    .WithCredentials(accessKey, secretKey)
                                    .WithSSL()
                                    .Build();
                FileUpload.Run(minio).Wait();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
        }

        // File uploader task.
        private async static Task Run(MinioClient minio)
        {
            var bucketName = "mymusic";
            var location = "us-east-1";
            var objectName = "0.png";
            var filePath = "C:\\Users\\Pride\\Pictures\\0.png";
            //var contentType = "application/zip";

            try
            {
                // 在服务器上创建一个bucket(如果还没有)。
                var beArgs = new BucketExistsArgs()
                    .WithBucket(bucketName);
                //是否存在bucket
                bool found = await minio.BucketExistsAsync(beArgs).ConfigureAwait(false);
                if (!found)
                {
                    var mbArgs = new MakeBucketArgs()
                        .WithBucket(bucketName);
                    await minio.MakeBucketAsync(mbArgs).ConfigureAwait(false);
                }
                //上传文件到bucket。
                var putObjectArgs = new PutObjectArgs()
                    .WithBucket(bucketName)
                    .WithObject(objectName)
                    .WithFileName(filePath);
                    //.WithContentType(contentType);
                var res= await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false);
                Console.WriteLine("Successfully uploaded " + objectName);
            }
            catch (MinioException e)
            {
                Console.WriteLine("File Upload Error: {0}", e.Message);
            }
        }
70a03b0194bb1f64e5670d7726c46e2a.png
上传成功

直接访问就是失败

523609015d4637c7e54af426c5f29c3d.png

参考

  • • Minio Cookbook 中文版

  • • DotNet-Sdk 官方文档

  • • windos安装为服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值