spring cloud 文件服务器,SpringBoot集成MinIO文件服务器
docker-compose安装minio
version: '3'
services:
minio:
image: minio/minio:latest # 原镜像`minio/minio:latest`
container_name: minio # 容器名为'minio'
restart: always # 指定容器退出后的重启策略为始终重启
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "./data:/data"
- "./minio:/minio"
- "./config:/root/.minio"
environment:
TZ: Asia/Shanghai
LANG: en_US.UTF-8
MINIO_PROMETHEUS_AUTH_TYPE: "public"
MINIO_ACCESS_KEY: "root" # 登录账号
MINIO_SECRET_KEY: "password" # 登录密码
command: server /data
logging:
driver: "json-file"
options:
max-size: "100m"
ports: # 映射端口
- "9293:9000"
- "42330:42330"
运行
docker-compose -f ./docker-compose-minio.yml -p minio up -d --build
设置minio基本参数
登录http://localhost:9293/minio输入root 和password
点击右下角加号选择创建桶create buket
设置桶的权限
集成SpringBoot
引入依赖
io.minio
minio
6.0.11
commons-io
commons-io
2.6
配置文件
@Getter
@Setter
@ConfigurationProperties(prefix = "minio")
public class MinioProp {
public static final String MINIO_BUCKET = "mxf";
private String endpoint;//连接url
private String accesskey;//用户名
private String secretKey;//密码
}
@Configuration
@EnableConfigurationProperties(MinioProp.class)
public class MinioConfiguration {
@Autowired
private MinioProp minioProp;
@Bean
public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
MinioClient client =new MinioClient(minioProp.getEndpoint(),minioProp.getAccesskey(),minioProp.getSecretKey());
return client;
}
}
@RestController
@RequestMapping("/minio")
public class MinioController {
@Autowired
private MinioClient minioClient;
@GetMapping("/upload")
public String upload(){
return "/upload.jsp";
}
@ResponseBody
@PostMapping("/upload")
public Object upload(@RequestParam(name = "file", required = false) MultipartFile file){
if(file==null || file.getSize()==0){
return "上传文件不能为空";
}
String orgfileName = file.getOriginalFilename();
try {
InputStream in = file.getInputStream();
String contentType= file.getContentType();
minioClient.putObject(MinioProp.MINIO_BUCKET,orgfileName,in,null, null, null, contentType);
Map data=new HashMap<>();
data.put("bucketName",MinioProp.MINIO_BUCKET);
data.put("fileName",orgfileName);
return data;
} catch (Exception e) {
e.printStackTrace();
}
return "上传失败";
}
@RequestMapping("/download/{fileName}")
public void download(HttpServletResponse response, @PathVariable(name = "fileName") String fileName) {
InputStream in=null;
try {
//获取文件对象 stat原信息
ObjectStat stat =minioClient.statObject(MinioProp.MINIO_BUCKET, fileName);
response.setContentType(stat.contentType());
response.setContentType("application/octet-stream; charset=UTF-8");
in = minioClient.getObject(MinioProp.MINIO_BUCKET, fileName);
IOUtils.copy(in,response.getOutputStream());
}catch (Exception e){
e.printStackTrace();
}finally {
if(in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
使用postman测试
浏览器直接访问
spring cloud 文件服务器,SpringBoot集成MinIO文件服务器相关推荐
- springboot 集成MinIo 文件服务器
springboot 集成 MinIo 文件服务器 1.添加依赖 dependency><groupId>io.minio</groupId><artifactId ...
- Springboot项目集成Minio文件服务器(下)
Springboot项目集成Minio文件服务器(下) 1.配置依赖 在pom文件里面配置Minio的相关依赖. <!--添加minio的依赖--><dependency>&l ...
- SpringBoot集成MinIo实现资源库功能
项目背景 要实现一个资源库的功能,实现图片.文件.视频等资源的上传和下载. 项目git地址,还没完全完成 https://github.com/zhumengting/resource-managem ...
- minio的安装和springboot集成minio
文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...
- 【java_wxid项目】【第十六章】【Spring Cloud Alibaba Sentinel集成】
主项目链接:https://gitee.com/java_wxid/java_wxid 项目架构及博文总结: 点击:[使用Spring Boot快速构建应用] 点击:[使用Spring Cloud O ...
- 【java_wxid项目】【第七章】【Spring Cloud Security Oauth2集成】
主项目链接:https://gitee.com/java_wxid/java_wxid 项目架构及博文总结: 点击:[使用Spring Boot快速构建应用] 点击:[使用Spring Cloud O ...
- SpringBoot笔记:SpringBoot集成MinIO分布式文件系统
文章目录 搭建MinIO集群 SpringBoot集成 添加依赖 添加配置 获取MinioClient MinioUtils完整工具类 测试代码 搭建MinIO集群 首先搭建MinIO的分布式集群,集 ...
- Spring Cloud H SR5集成 Jaeger
Spring Cloud H SR5 集成Jaeger 该文章主要讲述Spring Cloud H SR5集成 opentracing-spring-jaeger-cloud-starter 3.1. ...
- spring cloud sream 统一集成mq中间件
spring cloud sream: 一个通道(入,出)对应一个主题 入,出对应于服务将 出通道---队列---入通道 binder :集成任意消息中间件的组件--建立连接,集成多个kafka就用多 ...
最新文章
- find的命令的使用和文件名的后缀
- 【HoorayOS】开源的Web桌面应用框架(第二版 v120311)
- 【CSDN】Markdown 如何画分界线
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- 使用JNA的透明JFrame
- unoconv 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件功能环境搭建
- 测试基础【第二篇】软件测试模型
- 回归方程的拟合优度检验_线性回归模型的拟合优度检验方法分析.ppt
- Word2Vec模型之训练篇
- Excel小技巧-获取列数
- 通过 api 调用检查具体日期是否为法定节假日
- 解决双启动GRLDR missing故障的方法
- Hyper-V的虚拟化架构
- type是python保留字_Python保留字总结
- 北京社保医院选择办法-附A类医保定点医院名单
- e480换高分屏_ThinkPadE480电脑(i5-8250u 8G内存 256G固态 高分屏0QCD 14英寸) 京东5699元...
- 4418. 选元素(动态规划)
- 计算机类论文综述的写法(转…
- 计算机制图用什么图纸,制图用什么笔记本好
- 串级PID与单极PID的区别
热门文章
- 学习OpenCV(5) opencv3.4 with CUDA编译
- 2023广州大学计算机考研信息汇总
- python 的没落_随着python的崛起,Java是否会在未来几年没落?
- tgp饥荒服务器文件夹,《饥荒》TGP版服务器搭建及设置图文教程 TGP版怎么建服务器...
- 计算机科学原理ap关于什么,3分钟读懂AP计算机科学原理和计算机科学A的区别!...
- CTFSHOW SQL注入篇(211-230)
- Python游戏之Pygame——太空飞机大战(四)
- 一个前端对七个后端?别说难,你可能连工作都找不到
- Ubuntu安装超好用的Edge浏览器
- pc端签名 vue 生成图片_vue 实现手写电子签名