MinIO 使用

MinIO自建对象存储

1、dock-compose
使用dock-compose拉取

  minio:
    image: "minio/minio"
    container_name: minio
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - "./minio/data1:/data1"
      - "./minio/data2:/data2"
    restart: on-failure
    command: server --console-address ":9001" http://minio/data{1...2}
    environment:
      - MINIO_ROOT_USER=user007 # 管理账户
      - MINIO_ROOT_PASSWORD=User1234 # 密码

2、登录后台
http://localhost:9001 ,新建buckets,设置Access Policy为public
在这里插入图片描述

3、json配置(建议启用ssl)

  "MinIO": {
    "Endpoint": "localhost:9000",
    "AccessKey": "2ZTepad5iCXIYaey16KU",
    "SecretKey": "b2NJRawoOyS6vx0qxvAW66YVEFReeXY375GMso1J",
    "WithSSL": false
  }

4、注入

    public static void AddCustomOSS(this WebApplicationBuilder builder)
    {
        var minio = builder.Configuration.GetSection("MinIO");
        var withSSL = bool.Parse(minio["WithSSL"]);
        builder.Services.AddMinio(configureClient => configureClient
            .WithEndpoint(minio["Endpoint"])
            .WithCredentials(minio["AccessKey"], minio["SecretKey"])
            .WithSSL(withSSL)
            .Build());
    }

5、上传
public async Task UploadFile(IFormFile file)
{
try
{
//获取上传存储地址和文件名
var fileName = $“{Guid.NewGuid():N}{Path.GetExtension(file.FileName)}”;
var objectName = $“/{DateTime.Now:yyyy/MM/dd}/{fileName}”;
//获取上传文件输入流
var stream = file.OpenReadStream();
//上传文件
var putObjectArgs = new PutObjectArgs()
.WithBucket(bucketName)
.WithObject(objectName)
.WithStreamData(stream)
.WithObjectSize(file.Length)
.WithContentType(file.ContentType);

var result = await _minioClient.PutObjectAsync(putObjectArgs).ConfigureAwait(false);
return result.ObjectName;
}
catch (MinioException ex)
{
throw new MinioException(“上传失败”, ex);
}
}
6、访问
http://localhost:9000/{BucketName}/{5d61907cfb974a488f5b7d7e9b4ef7b8.png}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络原理-TCP/IP --传输层(UDP)

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 目录 端口号UDP协议 端口号 我们在学习套接字的时候,涉及到两个概念:IP地址和端口号 IP地址是用来确定主机,这是网络层提供的概念 而端口号就是用来确定主机上的应用程序,就是传输层的概念的…

leetcode102. 二叉树的层序遍历

一、题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 二、输入输出实例: 示例 1: 输入:root [3,9,20,null,null,15,7] 输出&am…

c++(七)

c(七) 内联函数内联函数的特点为什么要有内联函数内联函数是如何工作的呢 类型转换异常处理智能指针单例模式懒汉模式饿汉模式 VS中数据库的相关配置 内联函数 修饰类的成员函数,关键字:inline inline 返回值类型 函数名(参数列…

【C++】———list容器

前言 1.list容器简单来说其实就是之前的链表结构。 2.这里的list用的是双向带头结点的循环链表。 目录 前言 一 构造函数 1.1 list (); 1.2 list (size_type n, const value_type& val value_type() ); 1.3 list (InputIterator first, InputIterator last…

21.Redis之分布式锁

1.什么是分布式锁 在⼀个分布式的系统中, 也会涉及到多个节点访问同⼀个公共资源的情况. 此时就需要通过 锁 来做互斥控制, 避免出现类似于 "线程安全" 的问题. ⽽ java 的 synchronized 或者 C 的 std::mutex, 这样的锁都是只能在当前进程中⽣效, 在分布式的这种多…

计算机系统结构之互联网络

一、基本的单级互联网络 1、立方体单级网络 立方体单级网络的名称来源于下图所示的三维立方体结构。每个顶点(网络的节点)代表一个处理单元,共有8个处理单元,用zyx三位二进制编号。 Cubei函数表式相连的入端和出端的二进制编号只…

海外媒体通稿:9个极具创意的旅游业媒体推广案例分享-华媒舍

如今,旅游业正迅速发展,媒体推广成为吸引游客的关键。为了更好地展示旅游目的地,许多创意而富有创新的媒体推广策略应运而生。本文将介绍九个极富创意的旅游业媒体推广案例,为广大从业者带来灵感和借鉴。 1. 视频系列:…

Hadoop3:MapReduce的序列化和反序列化

一、概念 1、序列化 就是把内存中的对象,转换成字节序列 (或其他数据传输协议)以便于存储到磁 盘(持久化)和网络传输。 2、反序列化 就是将收到字节序列(或其他数据传输协议)或者是磁盘的持…

services层和controller层

services层 我的理解,services层是编写逻辑代码语句最多的一个层,非常重要,在实际的项目中,负责调用Dao层中的mybatis,在我的项目中它调用的是这两个文件 举例代码如下 package com.example.sfdeliverysystem.servic…

华东师范大学研究团队《Ecology Letters 》揭示植物如何改变其物候以响应全球变化

自工业革命以来,人类活动导致多种环境因子同时发生变化,包括气候变暖、降水模式改变、氮沉降增加和大气CO2升高。这些变化预计会影响植物生命周期事件的季节时序—植物物候(Nature Reviews Earth & Environment | 傅伯杰院士团队发文阐述…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统(二) 资源…

机器学习第四十一周周报 JTFT

文章目录 week41 JTFT摘要Abstract1. 题目2. Abstract3. 网络架构3.1 JTFT3.2 具有可学习频率的稀疏FD表示3.3 用于提取跨渠道依赖关系的低阶注意力层 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程 5. 结论小结参考文献 week41 JTFT 摘要 本周阅读了题为A Joint Time-…

【TIPs】 Visual Stadio 2019 中本地误使用“git的重置 - 删除更改 -- hard”后,如何恢复?

环境: VS 2019Windows10本地版本管理(非远程) 前言: git 在Visual Stadio 2019中集成了git的版本管理,在本地用来做版本管理,本来比较好用。 不过有一次,由于拿最初始的版本的时候&#xf…

fyne apptab布局

fyne apptab布局 AppTabs 容器允许用户在不同的内容面板之间切换。标签要么只是文本,要么是文本和一个图标。建议不要混合一些有图标的标签和一些没有图标的标签。 package mainimport ("fyne.io/fyne/v2/app""fyne.io/fyne/v2/container"//&…

广告变现是什么

广告变现是指媒体或平台通过向用户展示广告主的广告,从而获得收入的过程。 广告变现就像是一个店主,他需要有一个吸引人的店面,提供优质的内容和服务,然后在店里摆放一些别人的商品或服务,每当有客人看了或买了这…

Proxmox 虚拟环境下1Panel Linux 服务器运维管理面板的安装

简介 以前安装服务器管理面板用的都是宝塔,今天发现 1Panel Linux 服务器运维管理面板也很好,面板清晰整洁,使用的技术比较先进,所以我决定亲自安装一下看看效果就竟如何? 1Panel Linux 服务器运维管理面板是一个开源…

C语言 | Leetcode C语言题解之第125题验证回文串

题目&#xff1a; 题解&#xff1a; bool isalumn(char c) {return (c > a && c < z) || (c > A && c < Z) || (c > 0 && c < 9); }bool isPalindrome(char* s) {for (int left 0, right strlen(s) - 1; left < right; left, …

XDMA原理及其应用和发展

XDMA原理 XDMA的主要原理是通过直接访问主机内存&#xff0c;实现数据的快速传输。在传统的DMA&#xff08;Direct Memory Access&#xff09;技术中&#xff0c;数据传输需要经过CPU的干预&#xff0c;而XDMA可以绕过CPU&#xff0c;直接将数据从外设读取到主机内存或者从主机…

Java | Leetcode Java题解之第126题单词接龙II

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<String>> findLadders(String beginWord, String endWord, List<String> wordList) {List<List<String>> res new ArrayList<>();// 因为需要快速判断扩展出的单词…

7-zip安装教程

一、简介 7-Zip 是一款开源的文件压缩软件&#xff0c;由 Igor Pavlov 开发。它具有高压缩比、支持多种格式、跨平台等特点。使用 C语言编写&#xff0c;其代码在 Github 上开源。 7-Zip的官网&#xff1a; 7-Zip 7-zip官方中文网站&#xff1a; 7-Zip 官方中文网站 7-Zip 的 G…