快速上手MinIO文件服务
配套视频:SpringBoot3整合MinIO
MinIO项目应用可参考视频 【SpringBoot3+Vue3+Uniapp小程序项目实战】
1. 概述
MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
优点
-
MinIO 是一个非常轻量的服务。
-
学习成本低,安装运维简单,开箱即用
-
提供 Java 客户端、JS 客户端
下载 https://min.io/
2. 启动服务
打开cmd进入minio目录,执行minio server ./data ,其中data目录为文件存储目录
访问 控制台 http://localhost:9000,用户密码默认均为 minioadmin
3. SpringBoot3整合MinIO
-
pom
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.0</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>1.3.70</version> </dependency> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.3.4</version> <exclusions> <exclusion> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </exclusion> <exclusion> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> </exclusion> </exclusions> </dependency>
-
application.yml
my: minio: endpoint: 127.0.0.1 # ip地址 port: 9000 # 端口号 accessKey: minioadmin # 账号 secretKey: minioadmin # 密码 secure: false # true代表用的是https,false则用的是http,默认值是true bucketName: "test" # 桶的名字 expiry: 8 # 文件url访问有效期,单位小时
-
创建配置类文章来源:https://www.toymoban.com/news/detail-833886.html
package com.qqcn.file.config; import io.minio.MinioClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MinioConfig { @Value("${my.minio.endpoint}") private String endpoint; @Value("${my.minio.port}") private Integer port; @Value("${my.minio.accessKey}") private String accessKey; @Value("${my.minio.secretKey}") private String secretKey; @Value("${my.minio.secure}") private Boolean secure; @Bean public MinioClient minioClient(){ return MinioClient.builder() .endpoint(endpoint,port,secure) .credentials(accessKey, secretKey) .build(); } }
-
Controller文章来源地址https://www.toymoban.com/news/detail-833886.html
package com.qqcn.file.controller; import com.qqcn.common.vo.Result; import com.qqcn.file.utils.MinioUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.Map; @RestController @RequestMapping("/file") @Slf4j public class FileController { @Autowired private MinioUtils minioUtils; @PostMapping(value = "/upload", consumes = "multipart/form-data") public Result<Map<String,Object>> upload(@RequestPart("file") MultipartFile file){ if(file == null || file.getSize() ==0){ return Result.fail("上传文件不能为空文件"); } try { Map<String, Object> uploadResult = minioUtils.upload(file); return Result.success(uploadResult); } catch (Exception e) { log.error(e.getMessage()); return Result.fail("文件上传失败"); } } @GetMapping("/url/{fileName}") public Result<String> getFileUrl(@PathVariable("fileName") String fileName){ String url = minioUtils.getUrl(fileName); return Result.success(url,"success"); } @DeleteMapping public Result<String> deleteFile(@RequestParam("fileName") String fileName){ try { minioUtils.removeObject(fileName); } catch (Exception e) { return Result.fail("文件删除失败"); } return Result.success(); } }
到了这里,关于SpringBoot3整合MinIO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!