springboot集成minIO
文件系统:负责管理和存储文件的系统软件。操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件
minIO:轻量级服务分布式文件系统,适合存储非机构化数据。采用去中心化共享架构,结点之间是对等关系。
端口号为9000,初次登录账号密码都是minioadmin
minIO中使用bucket的概念来分隔管理文件,当然我们也可以在设置object的时候通过2024/7/3/myPic.jpg在bucket中生成对应的文件夹方便文件管理
以下是通过minIO实现的文件管理
这里使用的是很经典的建造者模式,bucket代表你所选择的桶,object代表你要存放在当前桶的具体名称/具体位置,filename则是你要存放在文件在当前磁盘的具体位置。
public class MinIOtest {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://192.168.101.65:9000")
.credentials("minioadmin", "minioadmin")
.build(); @Test
public void upload() {
try {
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("test")
.object("pic.jpg")
.filename("C:\\Users\\17900\\Pictures\\74721741_p0_master1200.jpg")
.build()
);
} catch (Exception e) {
e.printStackTrace();
}
} @Test
public void delete() {
try {
minioClient.removeObject(
RemoveObjectArgs.builder()
.bucket("test")
.object("pic.jpg")
.build());
} catch (Exception e) {
e.printStackTrace();
} } @Test
public void search() {
try {
FilterInputStream test = minioClient.getObject(
GetObjectArgs.builder()
.bucket("test")
.object("pic.jpg")
.build()
);
// 指定输出流输出
FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\Users\\17900\\Pictures\\74721741_p0_master1200.jpg"));
IOUtils.copy(test, fileOutputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我们使用springboot接受一个MultipartFile文件时,苦于无法直接传递他的绝对路径以便于后面filename的使用。
我们通过File.createTempFile()来生成一个临时文件,再将上述MultipartFile文件通过transferTo将文件内容传给这个临时文件。这时我们可以把这个临时文件上传给远程minIO以供保存,
下述示例中,我们可以通过absolutePath将文件传递给fileName从而实现图片远程保存。
@ApiOperation("上传文件接口")
@RequestMapping(value = "/upload/coursefile",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public UploadFileResultDto uploadCoursefile(@RequestPart("filedata")MultipartFile filedata) throws IOException {
File tempFile=File.createTempFile("minio", "temp");
filedata.transferTo(tempFile);
String absolutePath = tempFile.getAbsolutePath();
return mediaFileService.upload(filedata,absolutePath);
}
24/7/5新增:通过minIO实现对分块文件的合并
@Test
void merge() {
List<ComposeSource> composeSources = Stream.iterate(0, i -> ++i)
.limit(5)
.map(i -> ComposeSource.builder().bucket("test").object("chunk/" + i).build())
.collect(Collectors.toList());
try {
minioClient.composeObject(ComposeObjectArgs.builder()
.bucket("test")
.object("merge.mp4")
.sources(composeSources)
.build());
} catch (Exception e) {
}
}
springboot集成minIO的更多相关文章
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- SpringBoot集成security
本文就SpringBoot集成Security的使用步骤做出解释说明.
- springboot集成Actuator
Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...
- SpringBoot集成Shiro并用MongoDB做Session存储
之前项目鉴权一直使用的Shiro,那是在Spring MVC里面使用的比较多,而且都是用XML来配置,用Shiro来做权限控制相对比较简单而且成熟,而且我一直都把Shiro的session放在mong ...
- SpringBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- springboot集成mybatis(二)
上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...
- springboot集成mybatis(一)
MyBatis简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyB ...
- springboot集成redis(mybatis、分布式session)
安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...
- SpringBoot集成jsp
一.springBoot集成jsp: 1.修改pom文件 <!--集成jsp所需jar包--> <!--jsp页面使用jstl标签--> <dependency> ...
- springboot集成schedule(深度理解)
背景 在项目开发过程中,我们经常需要执行具有周期性的任务.通过定时任务可以很好的帮助我们实现. 我们拿常用的几种定时任务框架做一个比较: 从以上表格可以看出,Spring Schedule框架功能完善 ...
随机推荐
- web游览器的标签页仿 ios mac 苹果的墓碑机制 (js代码)
背景: 本来项目开发系统防挂机功能,在其余游览器中均可以使用.但是呢在苹果的safair游览器中会出现几率失效,最后经过排查发现是苹果的墓碑机制导致.即:此标签页活跃,其他标签页假死.然后就导致防挂机 ...
- 夜莺监控 v7.beta4 发版,仪表盘变量和业务组下的机器联动
这个版本最大的改动,就是仪表盘变量和业务组下的机器联动.大家可以导入这个大盘做测试: https://github.com/ccfos/nightingale/blob/main/integratio ...
- vue中退出循环的方法
forEachforEach不能使用break和continue.return也无法退出循环. 使用break,会报错(报错信息:SyntaxError: Illegal break statemen ...
- 项目管理--PMBOK 读书笔记(13)【项目相关方管理】
1.相关方分矩阵 工具与技术 核查表 又叫检查表,计数表,收集属性数据,解决问题. 焦点小组&访谈: 特点:慢,焦点小组是一对多,访谈时多对多. 抽样统计&控制图: 控制图反应 ...
- 牛客网在线编程-语法篇-基础语法——C 语言解题集
前言 牛客网在线编程-语法篇-基础语法--C 语言解题集. 点击下方超链接跳转至对应编程题目,文章包含解析及源码. 01-基础语法 简单输出 BC1-Hello Nowcoder BC2-小飞机 基本 ...
- 端口占用,无法通过netstat找到进程,占用的端口又不能修改,该怎么办?
最近遇到一个奇葩的问题,项目跑的好好的,没有安装其它特殊软件,突然服务器启动报错,日志如下,显然是服务器的8080端口占用了. Caused by: java.net.BindException: A ...
- java关于json的一些问题
今天重写代码的时候,发现了一个异常:java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntim ...
- C# pythonnet(1)_传感器数据清洗算法
Python代码如下 import pandas as pd # 读取数据 data = pd.read_csv('data_row.csv') # 检查异常值 def detect_outliers ...
- .NET 个人博客-首页排版优化-2
个人博客-首页排版优化-2 原本这篇文章早就要出了的,结果之前买的服务器服务商跑路了,导致博客的数据缺失了部分.我是买了一年的服务器,然后用了3个月,国内跑路云太多了,然后也是花钱重新去别的服务商买了 ...
- Linux 错误码
背景 Linux的错误码包含在/usr/include/asm-generic/errno-base.h和/usr/include/asm-generic/errno.h 这两个文件内. 可用于查询. ...