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…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...