MinIO是什么
MinIO是一个对象存储解决方案,它提供了与Amazon Web Services S3兼容的API,并支持所有核心S3功能。 MinIO有能力在任何地方部署 - 公有云或私有云,裸金属基础设施,编排环境,以及边缘基础设施。
Windows环境安装Minio
下载服务端和客户端安装包文件
下载地址:官网:https://www.minio.org.cn
服务端文件:minio.exe 用于接收文件信息
客户端文件:mac.exe 用于上传文件 ,如果用程序代码操作文件存储,只启动服务端就ok
创建minio目录
1、创建一个minio的文件夹,存放minio相关文件
2、在minio文件夹中创建minio的应用目录bin,存放mc.exe 以及minio.exe 文件 。
3、在minio文件夹中创建minio的数据目录data,存放相关数据文件
4、在minio文件夹中创建minio的数据目录log,存储相关日志
启动minio服务器
1.以管理员权限打开cmd窗口,进入到minio.exe所在bin目录
2.设置用户名
用于登录minio客户端
1
| setx MINIO_ROOT_USER name
|
3.设置登录密码
1
| setx MINIO_ROOT_PASSWORD password
|
4.启动minio服务
1
| .\minio.exe server (data数据存放路径) --console-address "127.0.0.1:9000" --address "127.0.0.1:9005"
|
5.访问minio服务器
访问客户端地址 http://127.0.0.1:9000/ 输入用户密码
SpringBoot集成Minio
引入minio依赖
1 2 3 4 5
| <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.5.6</version> </dependency>
|
配置上传信息
在application.yml中配置minio
1 2 3 4 5 6 7
| minio: config: url: http://127.0.0.1:9005 #ip地址 accessKey: # 账号 secretKey: # 密码 secure: false #如果是true,则用的是https而不是http,默认值是true bucketName: "" # 桶的名字 相当于文件夹
|
编写测试
1.文件上传
controller
1 2 3 4 5 6 7 8 9 10 11 12 13
| @RestController @RequestMapping("/file") public class FileController { @Autowired private UploadService uploadService; @PostMapping("upload") public Result upload(@RequestParam("file") MultipartFile file) throws IOException { FileVO upload = uploadService.upload(file); return new Result().ok(upload); } }
|
service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| @Slf4j @Service public class MinioSysFileServiceImpl implements UploadService { @Autowired private MinioConfig minioConfig; @Autowired private MinioClient client; @Override public FileVO upload(MultipartFile file) { FileVO fileVO = new FileVO(); try { String originalFilename = file.getOriginalFilename(); String extname = originalFilename.substring(originalFilename.lastIndexOf(".")); PutObjectArgs args = PutObjectArgs.builder() .bucket(minioConfig.getBucketName()) .object(originalFilename) .stream(file.getInputStream(), file.getSize(), -1) .contentType(file.getContentType()) .build(); client.putObject(args); log.info("文件上传成功"); String url = minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + originalFilename; fileVO.setUrl(url); fileVO.setSize(file.getSize()); fileVO.setFileName(originalFilename); fileVO.setExtname(extname); } catch (Exception e) { throw new ServerException("文件上传异常" + e.getCause().toString()); } return fileVO; } }
|
文件返回VO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Data @Schema(description = "文件信息") public class FileVO { @Schema(description = "文件url") private String url; @Schema(description = "文件名称") private String fileName; @Schema(description = "文件大小") private Long size; @Schema(description = "文件扩展名") private String extname; }
|
测试上传
打开postman或者swagger测试
上传一个图片,即可在Minio控制台中对应桶中找到该文件
Minio控制台的一些设置
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~