C#系列-使用 Minio 做图片服务器实现图片上传 和下载(13)

1Minio 服务器下载和安装

要在本地安装和运行 MinIO 服务器,你可以按照以下 步骤进行操作:

1. 访问 MinIO 的官方网站:https://min.io/,然后 点击页面上的”Download”按钮。

2. 在下载页面上,选择适合你操作系统的 MinIO 服 务器版本进行下载。MinIO 服务器支持 Windows、Linux 和 MacOS 等操作系统。

3. 下载完成后,解压缩下载的文件。在 Windows 上,你可以使用压缩软件(如 WinRAR 或 7-Zip)

进行解压缩。在 Linux 和 MacOS 上,你可以使

用命令行工具进行解压缩。

4. 打开解压缩后的文件夹,你会看到一个名为” minio”(或”minio.exe”)的可执行文件。

5. 在命令行中,进入到 MinIO 服务器所在的文件 夹。

6.  运行以下命令来启动 MinIO 服务器:

在 Windows 上:

minio.exe server <path_to_data_director y>

minio.exe server d:\tempfile

在 Linux 和 MacOS 上:

./minio  server <path_to_data_directory>

<path_to_data_directory>是你想要用作 MinIO 服务器数据存储的文件夹路径。如果指定 的文件夹不存在,MinIO 服务器会自动创建它。

7. 当 MinIO 服务器成功启动后,你会在命令行中看 到类似以下的输出:

Endpoint:     http://127.0.0.1:9000 http://192.

168.1.10:9000

AccessKey: <your_access_key>

SecretKey: <your_secret_key>

...

这些信息包括 MinIO 服务器的访问地址(Endpoint)、 访问密钥(AccessKey)和密钥(SecretKey)。请 记下这些信息,你将在代码中使用它们来连接和操作 MinIO 服务器。

1. 现在,你可以使用代码来连接和操作 MinIO 服务 器,如前面提供的示例代码所示。

请注意,这只是一个本地安装和运行 MinIO 服务器的 简单示例。在实际应用中,你可能需要进行更多的配 置和安全性设置。你可以参考 MinIO 的官方文档 MinIO Object Storage for Kubernetes — MinIO Object Storage for Kubernetes

2、图片,视频上传和下载 使用 Minio 创建文件数据库

C#访问MinIO可以通过MinIO的官方.NET SDK来实现。MinIO是一个高性能的对象存储服务器,与Amazon S3兼容。你可以使用MinIO.NET SDK来上传、下载、列出、删除等操作对象存储中的文件。

首先,你需要在你的C#项目中安装MinIO.NET SDK。你可以通过NuGet包管理器来安装Minio包。

shell代码

Install-Package Minio -Version [版本号]

或者,如果你使用.NET Core CLI,可以运行:

shell代码

dotnet add package Minio --version [版本号]

安装完成后,你可以在你的C#代码中这样使用MinIO SDK

csharp代码

using Minio;

using System;

using System.IO;

using System.Threading.Tasks;

class Program

{

static async Task Main(string[] args)

{

// MinIO服务器地址、端口、访问密钥和秘密密钥

var minioClient = new MinioClient("minio.example.com", 9000, "YOUR-ACCESS-KEY", "YOUR-SECRET-KEY");

try

{

// 检查存储桶是否存在

bool isBucketExist = await minioClient.BucketExistsAsync("my-bucket");

if (!isBucketExist)

{

// 创建一个新的存储桶

await minioClient.MakeBucketAsync("my-bucket");

}

// 上传一个文件到存储桶

var putObjectArgs = new PutObjectArgs("my-bucket", "my-objectname", new MemoryStream(System.Text.Encoding.UTF8.GetBytes("Hello, MinIO!")));

await minioClient.PutObjectAsync(putObjectArgs);

// 下载文件

using (var memoryStream = new MemoryStream())

{

var getObjectArgs = new GetObjectArgs("my-bucket", "my-objectname");

await minioClient.GetObjectAsync(getObjectArgs, memoryStream);

memoryStream.Position = 0;

using (var streamReader = new StreamReader(memoryStream))

{

Console.WriteLine(streamReader.ReadToEnd());

}

}

// 列出存储桶中的对象

var listObjectsArgs = new ListObjectsArgs("my-bucket");

var objects = await minioClient.ListObjectsAsync(listObjectsArgs);

foreach (var obj in objects)

{

Console.WriteLine($"Object: {obj.Key}, Size: {obj.Size}");

}

// 删除对象

await minioClient.RemoveObjectAsync("my-bucket", "my-objectname");

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

}

}

确保替换上面代码中的minio.example.com9000YOUR-ACCESS-KEYYOUR-SECRET-KEY为实际的MinIO服务器地址、端口以及你的访问密钥和秘密密钥。

这个示例代码展示了如何创建MinIO客户端,检查存储桶是否存在,上传和下载文件,列出存储桶中的对象,以及删除对象。

注意:在生产环境中,你应该使用更安全的方式来管理你的访问密钥和秘密密钥,比如使用环境变量或秘密管理工具来存储这些敏感信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/471316.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拼写检查应用程序:基于词典编辑的解释

目录 一、说明 二、拼写检查应用程序创建方法&#xff1a; 三、拼写检查器中的错误检查指标 1.小写和标记化 2.读取文档中的每个单词&#xff0c;传入word函数&#xff0c;统计每个单词的个数 3.生成与输入单词相距一次编辑的所有可能单词 4.生成距输入单词两次编辑的所有可能编…

Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏解锁图标置顶显示功能实现

1.前言 在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏锁屏功能中,时钟显示的很大,并且是在左旁边居中显示的, 由于需要和竖屏显示一样,所以就需要用到小时钟显示,然后同样需要居中,所以就来分析下相关的源码,来实现具体的功能 如图…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-信号量semaphore

目录 一、信号量基本概念二、信号量运行机制三、信号量开发流程四、信号量接口五、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、信号量基本概念 信号量&#xff08;Semaphore&#xff09;是一种实现任务间通信的机制&#xff0c;可以实现任务间同步或共享资源的…

优思学院|六西格玛到底有没有用?

有很多人说&#xff0c;我的企业已经是行业的顶峰&#xff0c;不需要做些什么了&#xff0c;更不需要什么六西格玛。如果你这样想就大错特错了。历史上不乏因自满而错失发展机遇&#xff0c;最终被竞争对手超越的案例。 诺基亚&#xff08;Nokia&#xff09;&#xff0c;曾经的…

Vue核心基础4:绑定样式、条件渲染、列表渲染

1 绑定样式 【代码】 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>绑定样式</title><s…

猫头虎分享已解决Bug || TypeError: Cannot read property ‘value‘ of undefined

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【Qt】环境安装与初识

目录 一、Qt背景介绍 二、搭建Qt开发环境 三、新建工程 四、Qt中的命名规范 五、Qt Creator中的快捷键 六、QWidget基础项目文件详解 6.1 .pro文件解析 6.2 widget.h文件解析 6.3 widget.cpp文件解析 6.4 widget.ui文件解析 6.5 main.cpp文件解析 七、对象树 八、…

7.JS里表达式,if条件判断,三元运算符,switch语句,断点调试

表达式和语句的区别 表达式就是可以被求值的代码比如什么a 1 语句就是一段可以执行的代码比如什么if else 直接给B站的黑马程序员的老师引流一波总结的真好 分支语句 就是基本上所有的语言都会有的if else 语句就是满足不同的条件执行不同的代码&#xff0c;让计算机有条件…

相机图像质量研究(21)常见问题总结:CMOS期间对成像的影响--隔行扫描/逐行扫描

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

Fluke ADPT 连接器新增对福禄克万用 Fluke 17B Max 的支持

所需设备&#xff1a; 1、Fluke ADPT连接器&#xff1b; 2、Fluke 17B Max&#xff1b; Fluke 17B Max拆机图&#xff1a; 显示界面如下图&#xff1a; 并且可以将波形导出到EXCEL: 福禄克万用表需要自己动手改造&#xff01;&#xff01;&#xff01;

【计算机网络】物理层|传输介质|物理层设备|宽带接入技术

目录 一、思维导图 二、传输介质 1.传输介质——导引型 2.传输介质——非导引型​编辑 三、物理层设备 1.物理层设备&#xff1a;中继器&集线器 2.宽带接入技术&#xff08;有线&#xff09; ​编辑 四、趁热打铁☞习题训练 五、物理层总思维导图 推荐 前些天发现…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第五天-ARM Linux编程之字符设备驱动(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 教学内容&#xff1a; 1、内核模块的简单框架&#xff1a; __init __exit执行完后就释放空间 简单框架&#xff1a;包含三个部分 1&#xff09;模块初始化和模块退出函数…