搭建一个文件存储服务器minio,实现文件存储
搭建一个文件存储服务器minio,实现文件存储
Minio是一个开源的、自托管的对象存储服务器,它提供了类似于云存储服务的功能。你可以使用Minio搭建自己的私有云存储解决方案,或者作为公共存储服务的替代方案。
安装
根据官网内容进行安装即可。笔者采用windos
本地安装的方式

安装好后就能看到账号和密码了。默认的为  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"


知识点
- 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 
使用
DotNet官方示例
using System;
using Minio;
using Minio.Exceptions;
using Minio.DataModel;
using System.Threading.Tasks;
using System.Runtime.Intrinsics.X86;
using System.Reactive.Linq;
namespace FileUploader
{
    class FileUpload
    {
        static void Main(string[] args)
        {
            //var endpoint = "play.min.io";
            //var accessKey = "Q3AM3UQ867SPQQA43P2F";
            //var secretKey = "zuf+123123";
            var accessKey = "Si27eMmz123123B1zf96rmyezz";
            var secretKey = "123123";
            var endpoint = "421231231238";
            try
            {
                var minio = new MinioClient()
                                    .WithEndpoint(endpoint,9000)
                                    .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 = "filebacket";
            var objectName = "Surface_Laptop_Go_003.png";
            var filePath = @"C:\Users\Pride\Pictures\Surface_Laptop_Go_003.png";
            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 getListBucketsTask = await minio.ListBucketsAsync().ConfigureAwait(false);
                // 输出bucket列表
                foreach (var bucket in getListBucketsTask.Buckets)
                {
                    Console.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
                }
                //上传文件到bucket。
                //var putObjectArgs = new PutObjectArgs()
                //    .WithBucket(bucketName)
                //    .WithObject(objectName)
                //    .WithFileName(filePath);
                //    //.WithContentType(contentType);
                //var res= await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false);
                var listObjectsArgs = new ListObjectsArgs()
                    .WithBucket(bucketName);
                //获取bucket里面所有文件
                var filelist = await minio.ListObjectsAsync(listObjectsArgs);
                var expiryInSeconds = 7 * 24 * 60 * 60;  // 链接有效期(7天的秒数)
                //获取临时预览链接
                var args = new PresignedGetObjectArgs()
               .WithBucket(bucketName)
               .WithObject(objectName)
               .WithExpiry(expiryInSeconds);
                var aaa = await minio.PresignedGetObjectAsync(args).ConfigureAwait(false);
                Console.WriteLine($"文件临时预览链接: {bucketName}");
                //var bbb = await minio.GetObjectAsync(args).ConfigureAwait(false);
                //var bucketName = "your-bucket-name";  // 存储桶名称
                //var objectName = "your-object-name";  // 文件名称
                //var expiryInSeconds = 3600;  // 链接有效期(单位:秒)
                //var presignedUrl = await _minioClient.PresignedGetObjectAsync(bucketName, objectName, expiryInSeconds);
                //Console.WriteLine("浏览链接: " + presignedUrl);
                Console.WriteLine("Successfully uploaded " + objectName);
            }
            catch (MinioException e)
            {
                Console.WriteLine("File Upload Error: {0}", e.Message);
            }
        }
    }
}

直接访问就是失败

参考
docker操作
dOgrpaNx2ayj1iDUHMLq7T2hmj5w7MV44Zh9UNap
run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"
-- 前面为本地路径 /网络路径
docker run -p 9000:9000 -p 9001:9001 -v /docker/minio/data:/data minio/minio server /data --console-address ":9001"
minioadmin
更改密码
搭建一个文件存储服务器minio,实现文件存储的更多相关文章
- 三分钟使用webpack-dev-sever搭建一个服务器
		webpack-dev-server是一个小型的Node.js Express服务器,我们可以通过它搭建一个本地服务器,并且实现文件热更新; 1.切换到你的目录下对项目进行初始化 npm init 一 ... 
- 【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南
		Minio的元数据 数据存储 MinIO对象存储系统没有元数据数据库,所有的操作都是对象级别的粒度的,这种做法的优势是: 个别对象的失效,不会溢出为更大级别的系统失效. 便于实现"强一致性& ... 
- 第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio-minio全网最全的资料
		目录 1. MinIO介绍 2. MinIO应用场景 2.1 单主机单硬盘模式 2.2 单主机多硬盘模式 2.3 多主机多硬盘分布式 3. MinIO特点 4. 存储机制 5. docker安装Min ... 
- 搭建一个web服务下载HDFS的文件
		需求描述 为了能方便快速的获取HDFS中的文件,简单的搭建一个web服务提供下载很方便快速,而且在web服务器端不留临时文件,只做stream中转,效率相当高! 使用的框架是SpringMVC+HDF ... 
- 使用python来搭建一个简易的文件下载环境以及用droopy来实现一个文件上传环境
		ubuntu在安装的时候一般都是自带python环境的,大家可以查看一下查看demo如下 用于共享的命令很简单python2: python -m SimpleHTTPServer 8888pytho ... 
- 跟我一起使用electron搭建一个文件浏览器应用吧(四)
		在软件的世界里面,创建一个新项目很容易,但是坚持将他们开发完成并发布却并非易事.分发软件就是一个分水岭, 分水岭的一边是那些完成的被全世界用户在用的软件,而另外一边则是启动了无数项目却没有一个完成的. ... 
- 跟我一起使用electron搭建一个文件浏览器应用吧(二)
		这个文件浏览器应用可以具备以下两种功能噢- This file browser application can have the following two functions. 一:用户浏览文件夹和 ... 
- SpringBoot 搭建基于 MinIO 的高性能存储服务
		1.什么是MinIO MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储.它与Amazon S3云存储服务兼容.使用MinIO构建用于机器学习,分析和应用程序数据工作负载的 ... 
- plist文件、NSUserDefault 对文件进行存储的类、json格式解析
		========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ... 
- 一个C#解决方案中各文件夹存放了些什么
		在VS2015中"生成"(Build)的过程: Source Code(.cs) -> Compile -> Object File(intermediate file ... 
随机推荐
- ASP.NET Core Library – scriban (Template Engine)
			前言 有些项目会需要让 end user 写模板 (rich text) 同时又需要做一些 data binding. 这几乎是 programmer 的工作了... 在 C#, 大可以使用 Razo ... 
- spring上 -基于Xml配置bean笔记
			4,Spring 内容 7,快速入门 需求:通过 Spring 的方式[配置文件], 获取 JavaBean: Monster 的对象, 并给该的对象属性赋值, 输出该对象信息. 代码结构: lib ... 
- Blinn-Phong
			为什么出现Blinn-Phong 虽然Phong性能较高,但是在某些镜面反射条件下就会失效.比如下图,我们明显发现了一条明显的亮暗边界线,这在实际场景中是不应该发生的(实际场景中不会出现这种明显的过渡 ... 
- 【PyTorch】state_dict详解
			这篇博客来自csdn,完全用于学习. Introduce 在pytorch中,torch.nn.Module模块中的state_dict变量存放训练过程中需要学习的权重和偏执系数,state_dict ... 
- LinearRegression线性回归
			1.LinearRegression将方程分为两个部分存放,coef_存放回归系数,intercept_则存放截距,因此要查看方程,就是查看这两个变量的取值. 2.回归系数(regression co ... 
- 墨天轮专访TDengine陶建辉:坚持做难而正确的事,三次创业成就不悔人生
			导读: 时序数据库(Time Series Database)在最近几年被越来越多的用户接受并使用,并有广泛的应用场景.云原生时序数据库 TDengine 一直稳居墨天轮时序数据库榜首,其近期的海外发 ... 
- 在实例化对象的时候new关键字具体做了哪些操作?
			a 创建了一个空对象 {}b 通过原型链把空对象和构造函数连接起来__proto__ = prototype c 构造函数的this指向新对象,并执行函数体 d 判断构造函数的返回值,返回对象就使用该 ... 
- Android复习(三)清单文件中的元素——>uses-sdk
			<uses-sdk> Google Play 会利用在应用清单中声明的 <uses-sdk> 属性,从不符合其平台版本要求的设备上滤除您的应用.在设置这些属性前,请确保您了解 ... 
- mysql+navicat+eclipse+jsp
			mysql server 5.5安装 微信公众号搜软件智库,然后找到mysql 5.5 百度网盘下载对应自己电脑版本的mysql 百度网盘:http://pan.baidu.com/s/1jI5oB6 ... 
- 云原生周刊: 使用 Kubectl 执行 100 个 Kubernetes 诊断命令 | 2023.10.23
			开源项目推荐 Stern Stern 是一个针对 Kubernetes 的多 pod 和容器日志跟踪工具.可以跟踪 Kubernetes 上的多个 pod 和 pod 中的多个容器.每个结果都用颜色编 ... 
