网站首页 > 博客文章 正文
文章目录:
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、测试文件上传
猜你喜欢
- 2024-09-27 使用keepalived+sidekick+Minio实现高可用
- 2024-09-27 在国产操作系统deepin部署minio分布式存储
- 2024-09-27 极光笔记丨搭建UMS私有云文件服务器
- 2024-09-27 Spring Boot整合Minio实现上传凭证、分片上传、秒传和断点续传
- 2024-09-27 开源&Docker:何必nextcloud,新晋神级私人云盘,在线office编辑
- 2024-09-27 「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作
- 2024-09-27 使用Docker Compose快速部署MinIO高性能分布式存储
- 2024-09-27 如何使用s3fs-fuse挂载minio存储桶到本地
- 2024-09-27 「云原生.大数据」镜像仓库 Harbor 对接 MinIO 对象存储
- 2024-09-27 三分钟部署windows版本分布式储存Minio
你 发表评论:
欢迎- 07-07Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- 07-07Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- 07-07Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- 07-07Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- 07-07IT运维必会的30个工具(it运维工具软件)
- 07-07开源项目有你需要的吗?(开源项目什么意思)
- 07-07自动化测试早就跑起来了,为什么测试管理还像在走路?
- 07-07Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- 最近发表
-
- Xiaomi Enters SUV Market with YU7 Launch, Targeting Tesla with Bold Pricing and High-Tech Features
- Black Sesame Maps Expansion Into Robotics With New Edge AI Strategy
- Wuhan's 'Black Tech' Powers China's Cross-Border Push with Niche Electronics and Scientific Firepower
- Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!
- IT运维必会的30个工具(it运维工具软件)
- 开源项目有你需要的吗?(开源项目什么意思)
- 自动化测试早就跑起来了,为什么测试管理还像在走路?
- Cursor 最强竞争对手来了,专治复杂大项目,免费一个月
- Cursor 太贵?这套「Cline+OpenRouter+Deepseek+Trae」组合拳更香
- 为什么没人真的用好RAG,坑都在哪里? 谈谈RAG技术架构的演进方向
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)