minIO下载与使用
- 官网地址 https://min.io/
- github地址 https://github.com/minio/minio
- windows 服务端下载地址 https://dl.minio.io/server/minio/release/windows-amd64/minio.exe
简介
MinIO是一个高性能、分布式对象存储系统,专门设计用于存储和检索大规模数据对象,如照片、视频、日志文件等。它的设计灵感来自于云原生应用的要求,提供了云存储的灵活性和可伸缩性,适用于私有云、公有云和混合云环境。以下是MinIO的一些关键特点和简介:
对象存储:MinIO以对象的形式存储数据,每个对象通常包含数据本身、元数据(例如文件名、文件类型等)和一个唯一的标识符。
分布式架构:MinIO采用分布式架构,可以在多个节点上分布数据,提供高可用性和冗余,以防止数据丢失。
高性能:MinIO被设计为非常快速的对象存储系统,可以利用现代硬件和网络来实现低延迟和高吞吐量的数据访问。
S3兼容性:MinIO提供了Amazon S3兼容的API,这意味着您可以使用AWS SDK和工具,以及现有的S3应用程序,无缝地连接到MinIO。
安全性:MinIO支持多种安全性功能,包括数据加密、身份验证、访问控制策略等,以确保数据的保密性和完整性。
扩展性:MinIO可以在需要时轻松扩展,可以添加更多的存储节点来应对不断增长的数据需求。
轻量级部署:MinIO的部署和维护非常简单,您可以在几分钟内设置一个MinIO实例,并开始存储和检索数据。
开源:MinIO是一个开源项目,其代码开放,社区活跃,您可以查看源代码、贡献代码或者报告问题。
MinIO主要用于存储海量的非结构化数据,如图片、视频、日志文件、备份数据等。它在大数据、云计算、容器化部署等场景中得到了广泛应用,特别适用于需要快速、可扩展和高性能存储的应用程序。无论是构建私有云存储解决方案,还是为现有应用添加对象存储功能,MinIO都是一个值得考虑的选择。
下载使用
下载后,打开cmd命令行,进入minIO.exe,执行命令
.\minio.exe server D:\minio\files
,注意 D:\minio\files 为文件保存路径
根据上面命令行得到的地址与账户。打开浏览器控制台地址(Console)即可登录。
新建桶与用户
新建桶
在MinIO中,”桶”(Bucket)是一种类似于文件夹的逻辑容器,用于组织和管理存储在MinIO服务器上的对象(文件)。桶在MinIO中具有以下特点:
- 逻辑容器:桶是一种逻辑上的容器,用于将对象进行组织和分类。您可以在MinIO中创建多个桶,每个桶可以包含不同类型的对象。
- 唯一命名空间:在整个MinIO服务器中,桶的名称必须是唯一的。这意味着不能有重复的桶名。
- 权限和策略控制:桶级别的权限设置允许您对不同的桶进行细粒度的访问控制,以确保安全性。您可以设置桶的访问权限,控制谁可以访问和操作桶中的对象。
- Lifecycle 策略:MinIO允许您为每个桶设置生命周期策略,自动执行对象的过期、删除等操作。
- 事件通知:您可以配置事件通知,以便在桶中发生某些事件(例如对象上传、删除)时接收通知。
- 访问日志:MinIO可以记录每个桶中的访问日志,以便您可以了解谁何时访问了桶中的对象。
- 版本控制:MinIO还支持在特定桶中启用对象版本控制,以便您可以管理对象的不同版本。
- 存储策略:您可以为每个桶选择不同的存储策略,例如标准存储、归档存储等。
新建用户
springboot整合minio实现文件预览上传
第一步:引入依赖
1 2 3 4 5 6
| <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.2</version> </dependency>
|
第二步:设置minIO配置
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 43 44 45 46 47
| package com.dpf.source.visualTool.util.minIO;
import io.minio.MinioClient; import lombok.Data; import org.codehaus.plexus.component.annotations.Component; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
@Configuration @Data public class MinIOConfig { private String endpoint = " http://172.16.7.252:9000"; private String accessKey = "minioSpring"; private String secretKey = "minioSpring"; private String bucketName = "files";
public String getEndpoint() { return endpoint; }
public String getAccessKey() { return accessKey; }
public String getSecretKey() { return secretKey; }
public String getBucketName() { return bucketName; }
@Bean public MinioClient getMinioClient(){ MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey,secretKey).build(); System.out.println("\"Minio Initialize........................successful\""); return minioClient; } }
|
第三步:上传文件并返回预览Url地址
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 43 44 45 46 47 48
| package com.dpf.source.visualTool.util.minIO;
import io.minio.MinioClient; import io.minio.PutObjectArgs; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream;
@Slf4j @Component public class MinIOServer {
@Autowired private MinioClient minioClient; @Autowired private MinIOConfig minIOConfig;
public String uploadFile(MultipartFile file) throws Exception{
String fileName = file.getOriginalFilename(); InputStream inputStream = file.getInputStream();
PutObjectArgs args = PutObjectArgs.builder() .bucket(minIOConfig.getBucketName()) .object(fileName) .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); minioClient.putObject(args); inputStream.close(); return minIOConfig.getEndpoint() + "/" + minIOConfig.getBucketName() + "/" + fileName;
}
}
|
第四步:使用
1
| pdfInfo.setUrl(minIOServer.uploadFile(file1));
|
第五步:测试
导入pdf文件,可以看到已经返回了预览的url地址,测试成功 。