C#系列-使用 Minio 做图片服务器实现图片上传 和下载(13)
1、Minio 服务器下载和安装
要在本地安装和运行 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.com、9000、YOUR-ACCESS-KEY和YOUR-SECRET-KEY为实际的MinIO服务器地址、端口以及你的访问密钥和秘密密钥。
这个示例代码展示了如何创建MinIO客户端,检查存储桶是否存在,上传和下载文件,列出存储桶中的对象,以及删除对象。
注意:在生产环境中,你应该使用更安全的方式来管理你的访问密钥和秘密密钥,比如使用环境变量或秘密管理工具来存储这些敏感信息。
相关文章:
C#系列-使用 Minio 做图片服务器实现图片上传 和下载(13)
1、Minio 服务器下载和安装 要在本地安装和运行 MinIO 服务器,你可以按照以下 步骤进行操作: 1. 访问 MinIO 的官方网站:https://min.io/,然后 点击页面上的”Download”按钮。 2. 在下载页面上,选择适合你操作系统的 …...
生活篇——华为手机去除负一屏
华为手机去除如下图的恶心负一屏 打开华为的应用市场app 进入:我的-设置-国家/地区(改为俄罗斯)-进入智慧助手检查更新并更新智慧助手。 然后重复开始的操作,将地区改回中国,这样就没有负一屏了。...
2024牛客寒假算法基础集训营2-c Tokitsukaze and Min-Max XOR
来源 题目 Tokitsukaze 有一个长度为 n 的序列 a1,a2,…,an和一个整数 k。 她想知道有多少种序列 b1,b2,…,bm满足: 其中 ⊕\oplus⊕ 为按位异或,具体参见 百度百科:异或 答案可能很大,请输出 mod1e97 后的结果。 输入描述…...
C语言:指针的基础详解
目录 1. 内存 2. 取地址& 3. 指针变量 4. 解引用 4.1 *解引用 4.2 []解引用 4.3 ->解引用 5. 指针变量的大小 5.1 结论 6. 指针运算 7. void* 指针 8. const修饰指针 8.1 const修饰变量 8.2 const修饰指针变量 8.3 结论 9. 野指针 9.1 为什么会出现野指…...
PHP+vue+mysql校园学生社团管理系统574cc
运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp 前端框架:vue.js 服务器:apache 数据库:mysql 数据库工具:Navicat/phpmyadmin 前台功能: 首页:展示社团信息和活动…...
VS Code中主程序C文件引用了另一个.h头文件,编译时报错找不到函数
目录 一、问题描述二、问题原因三、解决方法四、扩展五、通过CMake进行配置 一、问题描述 VS Code中主程序C文件引用了另一个.h头文件,编译时报错找不到函数 主程序 main.c #include <stdio.h> #include "sumaa.h"int main(int, char**){printf(&q…...
边缘计算:重塑数字世界的未来
引言 随着物联网(IoT)设备的激增和5G网络的普及,我们正站在一个计算模式的新纪元门槛上——边缘计算。这一技术范式将数据处理和分析推向网络的边缘,即设备或终端,为实时性要求较高的应用提供了前所未有的可能性。 目…...
2024 前端面试题 附录3
这里记录的是昨天和今天原篇的知识点补充 原篇地址: 2024 前端面试题(GPT回答 示例代码 解释)No.41 - No.60 2024 前端面试题(GPT回答 示例代码 解释)No.61 - No.100 2024 前端面试题(GPT回答 示例代…...
[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.
[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.——> Vue报错,key关键字不唯一: 解决办法:修改一下重复的id值!!!...
Docker-Learn(二)保存、导入、使用Docker镜像
1.保存镜像 根据上一节内容,将创建好镜像进行保存,需要退出当前的已经在运行的docer命令行中断里面,可以通过在终端里面输入指令exit或者按下键盘上的 ctrlD建退出: 回到自己的终端里面,输入指令: docker…...
第三百一十五回
文章目录 1. 概念介绍2. 基本用法3. 补充用法4. 内容总结 我们在上一章回中介绍了"再谈ListView中的分隔线",本章回中将介绍showMenu的用法.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容…...
区块链(一): 以太坊基础知识
目录 什么是区块链?什么是以太坊?什么是加密货币?以太坊与比特币有什么不同?以太坊能做什么?什么是智能合约?以太坊社区以太坊白皮书 什么是区块链? 区块链是一个交易数据库,在网络…...
高级FPGA开发之基础协议PCIe
基础协议之PCIe部分 一、TLP包的包头 在PCIe的系统中,tlp包的包头的结构有许多部分是相似的,通过掌握这些常规的包头,能帮助理解在PCIe总线上各个设备之间如何进行数据的收发。 通用的字段 通用字段作用Fmt决定了包头是3DW还是3DWÿ…...
Vue核心基础1:数据代理
1 回顾Object.defineProperty方法 let str hello const person {name: 张三,age: 18 } Object.defineProperty(person, sex, {// value: 男,// enumerable: true, // 控制属性是否可以枚举,默认值是false// writable: true, // 控制属性是否可以被修改࿰…...
12 ABC串口接收原理与思路
1. 串口接收原理 基本原理:通过数据起始位判断要是否要开始接收的数据,通过采样的方式确定每一位数据是0还是1。 如何判断数据起始位到来:通过边沿检测电路检测起始信号的下降沿 如何采样:一位数据采多次,统计得到高…...
leetcode(二分查找)34.在排序数组中查找元素的第一个和最后一个位置(C++详细解释)DAY11
文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计…...
算法刷题框架
前言:最近积累了一些算法题量,正在刷东神的算法笔记,监督自己记录下读后启发,顺便帮助道友们阅读 数据结构 这一部分老生常谈,数据的存储方式只有顺序存储和链式存储。 最基本的数组和链表对应这两者,栈…...
跟着cherno手搓游戏引擎【24】开启2D引擎前的项目总结(包括前置知识汇总)
前置技术: c动态链接和静态链接: 隐藏的细节:编译与链接_哔哩哔哩_bilibili 【底层】动态链接库(dll)是如何工作的?_哔哩哔哩_bilibili 预编译,编译,汇编,链接 预编译头文件: 为…...
石子合并+环形石子合并+能量项链+凸多边形的划分——区间DP
一、石子合并 (经典例题) 设有 N 堆石子排成一排,其编号为 1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这 N 堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,…...
IMX6ULL移植U-Boot 2022.04
目录 目录 1.编译环境以及uboot版本 2.默认编译测试 3.uboot中新增自己的开发板 3.编译测试 4.烧录测试 5.patch文件 1.编译环境以及uboot版本 宿主机Debian12u-boot版本lf_v2022.04 ; git 连接GitHub - nxp-imx/uboot-imx: i.MX U-Boot交叉编译工具gcc-arm-10.3-2021.0…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
