网站首页 > 文章精选 正文
文章目录:
Minio
1、 简介
MinIO 是一个用 Golang 开发的基于 Apache License v2.0 源协议的对象存储服务。
它兼容亚马逊 S3 云存储服务接口,适合存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,单个文件可以是任意大小,从几kb到最大5T不等。
2、 安装
使用 docker 安装
docker pull minio/minio
3、 启动
docker run -d -p 9010:9000 -p 9020:9020 --name minio -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin123456" -v E:\minio\data:/data -v E:\minio\config:/root/.minio minio/minio server /data --console-address ":9020"
说明:
- -d:后台启动
- -p:端口映射
- --name:容器名称
- -e:设置环境变量 --v:文件挂载
- minio/minio server /data:启动命令
- --console-address ":9020":静态端口
9020 为控制台访问端口。
4、 创建存储桶 & 设置权限
创建存储桶:
设置存储桶权限:
Spring Boot 整合 Minio
1、添加 Maven 依赖
<!-- Minio 依赖 -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.2.2</version>
</dependency>
<!-- 工具类库 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
2、 配置 Minio 属性
# minio配置信息
# 连接地址
minio.endpoint=http://127.0.0.1:9010
# 用户名
minio.accessKey=admin
# 密码
minio.secretKey=admin123456
3、Spring Boot 中配置 Minio
MinioProperties.java
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProperties {
/**
* 连接地址
*/
private String endpoint;
/**
* 用户名
*/
private String accessKey;
/**
* 密码
*/
private String secretKey;
}
MinioConfig.java
@Configuration
@EnableConfigurationProperties(MinioProperties.class)
public class MinioConfig {
@Resource
private MinioProperties minioProperties;
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(minioProperties.getEndpoint())
.credentials(minioProperties.getAccessKey(), minioProperties.getSecretKey())
.build();
}
}
4、处理上传文件的控制器类
private static final String FILE_NAME_PATTERN = "{}_{}";
// ...
@RequestMapping("/upload")
public Object upload(MultipartFile file) {
// 上传文件的原始文件名
String originalFilename = file.getOriginalFilename();
// 文件大小
long fileSize = file.getSize();
log.info("上传文件的原始文件名:{},文件大小:{}", originalFilename, fileSize);
// 文件名:日期_原始文件名
String fileName = StrUtil.format(FILE_NAME_PATTERN, DateUtil.format(new Date(), "yyyyMMddHHmmss"), originalFilename);
log.info("格式化后的文件名:{}", fileName);
try {
minioClient.putObject(PutObjectArgs.builder().bucket("my-bucket")
.object(fileName).stream(file.getInputStream(), fileSize, -1).contentType(file.getContentType()).build());
} catch (Exception e) {
log.info("上传文件失败!", e);
return result(500, "上传失败!");
}
return result(200, "上传成功!");
}
FILE_NAME_PATTERN是上传文件的命名格式。第一个{}放的是上传时间,格式是yyyyMMddHHmmss,精确到秒。第二个{}放的是上传文件的原始文件名。
5、测试文件上传
猜你喜欢
- 2025-06-10 Spring Cloud Feign 总结问题,注意点,性能调优,切换okhttp3
- 2025-06-10 SpringBoot 数据验证与表单处理全面指南(史上最全)
- 2025-06-10 Spring Boot 3.x 新特性详解:从基础到高级实战
- 2025-06-10 SpringBoot与MinIO整合,实现大文件分片上传与分片合并功能
- 2025-06-10 逆天强大!Spring AI 身份证识别,图片分析真牛啊
- 2025-06-10 PDF文件添加二维码水印(pdf怎么加二维码)
- 2025-06-10 Spring Boot超大文件上传的正确方式
- 2025-06-10 疯传阿里内网的SpringMVC笔记,被一个离职员工泄露,手慢无
- 2025-06-10 Java隐藏的10倍效率技巧!90%程序员不知道的魔法方法(附代码)
- 2025-06-10 java轻松玩转Excel之EasyExcel(java版execute)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)