# spring-cloud-starter-alibaba-minio **Repository Path**: avoid_loneliness/spring-cloud-starter-alibaba-minio ## Basic Information - **Project Name**: spring-cloud-starter-alibaba-minio - **Description**: 快速接入springcloud_alibaba 生态,实现和minio的整合 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-02-22 - **Last Updated**: 2022-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Cloud Alibaba Minio 快速接入springcloud_alibaba 生态,提供基于minio的桶、对象的保存,下载和删除,还提供监控以及启动的健康检车能力 ## ***当前支持*** + 基于springboot spi机制,配置minioclient提供基于minio的服务 + 通过配置文件,快速配置相关启动参数,实现快速接入 + 对oss操作均通过监控记录执行时间 + 依赖于spring启动健康检查,若配置不正确或minio服务未连接上,则系统无法启动 ## ***即将支持*** + 基于metrics实现oss服务监控能力 + 通过离线定时任务,完成minio客户端断链自动重连能力 + 接入nacos参数中心能力,实现minio参数动态推送并感知生效 + 接入sentinel自动分散大片文件压力 + 实现对通道传输,大文件和小文件分通道发送 ## ***即将支持*** 1 依赖约束 一般日志控制是在controller层,所以,在controller层的pom.xml中依赖如下配置 ```xml com.cloud spring-cloud-starter-alibaba-minio 1.0.0 ``` 2 配置文件 + 找到当前工程下的server模块,在其中src\main\resources\bootstrap.yaml中添加如下配置 ```yaml spring: cloud: minio: # minio链接地址 url: https://192.168.9.162:9000 accessKey: ${accessKey} secretKey: ${secretKey} # minio仓库名称 bucket: log # secure选项(是否使用https) secure: true # 是否跳过ssl验证(仅仅针对使用https开启后生效) skipSsl: true # 是否检查bucket是否存在 checkBucket: true ``` 3 代码使用 ```java @RestController @RequestMapping("/file") public class LogController extends BaseController { /** * 单文件上传 * * @param file * @return 返回文件名,让业务方做记录 */ @PutMapping("/upload") public String upload(@RequestParam MultipartFile file) throws MinioException { return minioService.upload(file); } /** * 文件下载 * * @param fileKey * @param response * @param request * @return * @throws MinioException */ @GetMapping("/download") public void download(@RequestParam(value = "fileKey") String fileKey, HttpServletResponse response, HttpServletRequest request) throws MinioException, IOException { InputStream inputStream = minioService.download(fileKey); // 获取文件前缀 int index = fileKey.indexOf(MinioService.SEPARATOR) + 1; String fileName = fileKey.substring(index); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setContentType("application/force-download"); response.setCharacterEncoding("UTF-8"); IoUtils.copy(inputStream, response.getOutputStream()); } } ```