Springboot与minio:

一、介绍

        Minio是一个简单易用的云存储服务,它让你可以轻松地把文件上传到互联网上,这样无论你在哪里,只要有网络,就能访问或分享这些文件。如果你想要从这个仓库里取出一张图片或一段视频,让网站的访客能看到或者下载,Minio和网站之间就需要配合完成几个步骤:

  1. 上传文件:首先,你通过Minio提供的接口或者工具,把视频或图片上传到Minio的服务器上。上传时,你可以设置一些额外的信息,告诉Minio这些文件是可以被公开访问的。
  2. 生成链接:当你要在网站上展示这些文件时,Minio能生成一个特殊的网址(我们叫做对象URL)。这个链接直接指向存储在Minio中的视频或图片。关键在于,这个链接可以设置一个有效期,过了时间就失效,保证安全性。
  3. 前端显示:网站的前端代码(就是浏览器能看到的部分)会用这个链接去请求Minio服务器上的视频或图片。当浏览器收到这些文件时,如果它们是图片,就会直接显示在页面上;如果是视频,则会在页面上嵌入一个播放器让用户观看。
  4. 下载功能:对于下载来说,其实也很简单。因为前端已经有了这个文件的直接链接,用户点击“下载”按钮时,浏览器就会使用这个链接开始下载文件到用户的电脑上,就像平时在网上下载东西一样。

二、部署minio

1、拉取最新的minio镜像

        使用docker pull minio/minio命令,下载镜像。

2、创建目录

        一个用来存放配置,一个用来存储上传文件的目录。启动前需要先创建Minio外部挂载的配置文件( /home/minio/config),和存储上传文件的目录( /home/minio/data)。

3、运行minio容器

docker run -p 9000:9000 -p 9090:9090 \--net=host \--name minio \-d --restart=always \-e "MINIO_ACCESS_KEY=minioadmin" \-e "MINIO_SECRET_KEY=minioadmin" \-v /home/minio/data:/data \-v /home/minio/config:/root/.minio \minio/minio server \/data --console-address ":9090" -address ":9000"

  • 9090端口指的是minio的客户端端口
  • MINIO_ACCESS_KEY :账号
  • MINIO_SECRET_KEY :密码(账号长度必须大于等于5,密码长度必须大于等于8位)

4、访问minio

        在浏览器输入:服务器地址:9090/login,进入登录界面。输入启动命令中设置的账号密码,进入系统。

三、minio系统操作

1、创建用户

       设置账号密码,勾选所有策略。

2、创建组

        设置组名,并向该组中添加用户。

3、创建accessKey和secretKey 

        直接点击创建即可。

        出现弹窗,点击下载。

        文件内容如下所示,保存文件,SDK操作文件的API需要用到:

{"url":"http://192.168.197.131:9090/api/v1/service-account-credentials","accessKey":"S2I6E378jrzSLTY0X0WY","secretKey":"vOGE87WIe3ilh4Ff2CUEzKuUskiZXctubjYkwcnC","api":"s3v4","path":"auto"}

4、创建Bucket(桶)

        设置名字,点击创建。

5、上传文件

       选择要上传到的bucket。

        点击upload上传。

四、springboot项目中使用minio

1、添加依赖

        minio包中自带的okhttp3会报错。需要排除依赖后重新引入。

<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.12</version><exclusions><exclusion><artifactId>okhttp</artifactId><groupId>com.squareup.okhttp3</groupId></exclusion></exclusions></dependency>

2、编写测试代码

package com.zkdj.applet.common;import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.*;
import org.junit.jupiter.api.Test;import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;/*** 类描述 -> minio测试类** @Author: ywz* @Date: 2024/09/18*/
public class MinioTest {/*** 方法描述 -> 测试MinIO上传功能* 该方法用于验证MinIO客户端的连接,并尝试向指定的存储桶上传文件。如果存储桶不存在,则创建它。* 使用了MinioClient来构建与MinIO服务器的连接,并执行相应的操作。** @Author: ywz* @Date: 2024/09/18*/@Testpublic void minioTest() {try {// 初始化MinioClient,设置服务器端点和访问凭证MinioClient minioClient =MinioClient.builder().endpoint("http://192.168.197.131:9000").credentials("S2I6E378jrzSLTY0X0WY","vOGE87WIe3ilh4Ff2CUEzKuUskiZXctubjYkwcnC").build();// 检查指定的存储桶是否存在boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("public").build());// 如果存储桶不存在,则创建它if (!found) {minioClient.makeBucket(MakeBucketArgs.builder().bucket("public").build());}// 向存储桶上传文件minioClient.uploadObject(UploadObjectArgs.builder().bucket("public").object("原神 2024_8_31 22_34_51.png").filename("C:\\Users\\86176\\Videos\\Captures\\原神 2024_8_31 22_34_51.png").build());// 输出上传成功的提示信息System.out.println("文件上传成功");} catch (MinioException e) {// 处理MinIO异常System.out.println("发生错误: " + e);System.out.println("HTTP跟踪: " + e.httpTrace());} catch (IOException | NoSuchAlgorithmException | InvalidKeyException e) {// 处理其他潜在异常throw new RuntimeException(e);}}
}

3、运行后查看

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

火狐浏览器同源策略禁止解决方案

Firefox火狐浏览器控制台,提示:已拦截跨源请求&#xff1a;同源策略禁止读取位于 http://127.0.0.1:5000/test.zip 的远程资源。&#xff08;原因&#xff1a;CORS 头缺少 Access-Control-Allow-Origin&#xff09;。状态码&#xff1a;200。 前言全局说明 Firefox火狐浏览器控…

图片文字翻译怎么快速翻译?5个软件教你快速进行图片文字翻译

图片文字翻译怎么快速翻译&#xff1f;5个软件教你快速进行图片文字翻译 图片文字翻译是日常工作和生活中常见的需求&#xff0c;尤其是在处理外文资料或旅游时。以下5款优秀的软件可以帮助你轻松、快速地将图片中的文字进行翻译&#xff0c;让你不再依赖手动输入和繁琐操作。…

Python燃烧废气排放推断算法模型

&#x1f3af;要点 宏观能耗场景模型参数化输入数据&#xff0c;分析可视化输出结果&#xff0c;使用场景时间序列数据模型及定量和定性指标使用线图和箱线图、饼图、散点图、堆积条形图、桑基图等可视化模型输出结果根据气体排放过程得出其时间序列关系&#xff0c;使用推断模…

镀金引线---

一、沉金和镀金 沉金和镀金都是常见的PCB金手指处理方式&#xff0c;它们各有优劣势&#xff0c;选择哪种方式取决于具体的应用需求和预算。 沉金&#xff08;ENIG&#xff09;是一种常用的金手指处理方式&#xff0c;它通过在金手指表面沉积一层金层来提高接触性能和耐腐蚀性…

链条缺陷检测系统源码分享

链条缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ

文本目录&#xff1a; ❄️一、优先级队列&#xff1a; ➷ 1、概念&#xff1a; ❄️二、优先级队列的模拟实现&#xff1a; ➷ 1、堆的概念&#xff1a; ➷ 2、堆的性质&#xff1a; ➷ 3、堆的创建&#xff1a; ▶ 向下调整&#xff1a; ➷ 4、堆的插入和删除&#xff1a; …

Linux权限管理: 文件访问者分类、文件类型和访问权限、权限值的表示方法、文件访问权限的相关设置方法、umask、目录的权限、粘滞位等的介绍

文章目录 前言一、文件访问者分类二、文件类型和访问权限1. 文件类型2. 基本权限 三、权限值的表示方法1. 字符表示方法2. 8进制数值表示方法 四、文件访问权限的相关设置方法1. chmod2. chown3. chgrp 五、 umask六、目录的权限七、粘滞位总结 前言 Linux权限管理&#xff1a…

论文不会写?分享6款AI论文写作免费一键生成网站!

在当今学术研究和写作领域&#xff0c;AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。本文将分享6款免费一键生成AI论文写作网站&#xff0c;并重点推荐千笔-AIPassPaper。 …

鸿蒙OpenHarmony【轻量系统芯片移植】物联网解决方案之芯海cst85芯片移植案例

物联网解决方案之芯海cst85芯片移植案例 本文介绍基于芯海cst85芯片的cst85_wblink开发板移植OpenHarmony LiteOS-M轻量系统的移植案例。开发了Wi-Fi连接样例和XTS测试样例&#xff0c;同时实现了wifi_lite, lwip, startup, utils, xts, hdf等部件基于OpenHarmony LiteOS-M内核…

初学者如何快速入门大语言模型(LLM)?

初学者如何快速入门大语言模型&#xff08;LLM&#xff09; 知乎大佬已给出了比较合理的方案&#xff0c;小白千万别走弯路了&#xff0c;下面给大家梳理和解读&#xff1a; 技术要求&#xff1a;要入门大语言模型&#xff0c;需要掌握以下基本技术&#xff1a; 开发语言&…

模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<、==、<=、>=、!=的运算符重载、赋值运算符(=)重载等的介绍

文章目录 前言一、 clear函数二、流提取(<<)和流插入(>>)运算符重载三、 >、<、、<、>、!的运算符重载四、赋值运算符&#xff08;&#xff09;重载总结 前言 模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<…

上线跨境电商商城的步骤

上线一个跨境电商商城涉及多个步骤&#xff0c;从前期准备到上线后的维护。以下是一些关键步骤&#xff1a; 1. 市场调研与规划 目标市场分析&#xff1a;研究目标市场的需求、竞争对手和消费者行为。法律法规&#xff1a;了解并遵守目标市场的法律法规&#xff0c;包括税收、…

git学习【持续更新中。。。】

git学习【持续更新中。。。】 文章目录 git学习【持续更新中。。。】一、Git基本操作1.创建本地仓库2.配置本地仓库1.局部配置2.全局配置 3.认识工作区、暂存区、版本库4.添加文件5.修改文件6.版本回退7.撤销修改8.删除文件 二、Git分支管理1.理解分支2.创建、切换、合并分支3.…

YOLOv8改进:SA注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,与其他一些注意力机制相比,不仅准确度更高,而且模型更加轻量化。)

如果实验环境尚未搭建成功&#xff0c;可以参考这篇文章 ->【YOLOv8超详细环境搭建以及模型训练&#xff08;GPU版本&#xff09;】 文章链接为&#xff1a;http://t.csdnimg.cn/8ZmAm ---------------------------------------------------------------------------​---…

亲测有效,长期有效的RTSP流地址公网RTSP地址,各种类型的视频源

我们经常需要做一些实时视频流的测试&#xff0c;但是手边又没有办法及时弄到一个摄像机&#xff0c;我们经常会去搜索一下“公网RTSP地址”&#xff0c;但是大部分现在都失效了&#xff0c;有什么办法能够让我们快速构建一个RTSP流&#xff0c;点几下就能直接用&#xff1f; …

C++ 在项目中使用Linux命令

一: 选择shell Linux 命令是由shell解析并转发给操作系统执行的&#xff0c;所有的shell都是从 Bourne shell&#xff08;/bin/sh&#xff09;派生的&#xff0c;Bourne shell是贝尔实验室为早期版本的Unix开发的标准shell。 每个Unix系统都需要一个版本的Bourne shell才能正…

Maple常用命令

1. 重启内核&#xff1a; restart 2. 化简式子 simplify(式子) 3. 引用前面出现的公式&#xff1a; CtrlL&#xff0c;在弹出的以下对话框中输入要引用的公式编号 4.

Pandas的读写数据

目录 读写文件的类型 Excel写 API 准备数据 1.直接写入(默认有索引和标题) 2.写入(去掉索引) 3.写入(去掉索引和标题) 4.写入(去掉索引和标题,指定表单信息) Excel读 API 1.读(默认带有索引和标题) 2.读(指定索引项) 3.读(碰到无标题列和无索引列,指定索引列,标题列…

[SIGGRAPH-24] CharacterGen

[pdf | code | proj] LRM能否用于3D数字人重建&#xff1f;问题在于&#xff1a;1&#xff09;缺少3D数字人数据&#xff1b;2&#xff09;重建任意姿态的3D数字人不利于后续绑定和驱动。构建3D数字人数据集&#xff1a;在VRoidHub上采集数据&#xff0c;得到13746个风格化角色…

vue3中如何拿到vue2中的this

vue3中常用api vue3中常用响应式数据类型&#xff1a;