springboot 整合高版本8.5.2 Minio

MinIO是一个开源的对象存储服务器,与Amazon S3兼容。下面是MinIO的一些重要能力:

  • MinIO是一个开源的对象存储服务器,与Amazon S3兼容。下面是MinIO的一些重要能力
  • 对象存储:MinIO支持对象存储,可以用来存储图片、视频、文档等任意数据类型。
  • 分布式存储:MinIO支持分布式存储,可以横向扩展来提高性能和容量。
  • 高可用性:MinIO采用了分布式存储和冗余备份来保证高可用性。
  • 安全性:MinIO支持TLS/SSL加密,数据在传输和存储过程中都受到保护。
  • 生命周期管理:MinIO支持基于时间和对象版本的生命周期管理,可以自动删除或迁移不再需要的对象。
  • 访问控制:MinIO支持灵活的访问控制策略,可以基于用户、组、IP地址、请求类型等条件进行授权管理。
  • 版本管理:MinIO支持版本管理,可以对同一对象的不同版本进行管理和查询。
  • 前缀搜索:MinIO支持前缀搜索,可以快速查找符合条件的对象。
  • 事件通知:MinIO支持事件通知机制,可以将对象的创建、修改、删除等事件通知到外部系统。
  • 与S3兼容性:MinIO兼容S3 API,可以与S3客户端、SDK、工具无缝对接。
<dependency>
			<groupId>io.minio</groupId>
			<artifactId>minio</artifactId>
			<version>8.5.2</version>
</dependency>

@Configuration
public class MinioConfig {

    
    @Bean
    public MinioClient minioClient() {
        return  MinioClient.builder()
                        .endpoint("http://minio.example.com")
                        .credentials("HVETHsd1EfWFSA7m", "pmo0HUIzfNJyCHULcmxEgIC1ls3YuJcu")
                        .build();
    }
}


@RestController
public class FileUploadController {

    @Autowired
    private MinioClient minioClient;

    @Value("${minio.bucketName:wiki}")
    private String bucketName;

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) throws Exception {
        // 检查桶是否存在,如果不存在则创建
        if (!minioClient.bucketExists( BucketExistsArgs.builder().bucket(bucketName).build())) {
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
        }
        // 上传文件到MinIO服务器
        minioClient.putObject(PutObjectArgs.builder()
                .bucket(bucketName)
                .object(file.getOriginalFilename())
                .stream(file.getInputStream(), file.getSize(), -1)
                .contentType(file.getContentType())
                .build());
        return "File uploaded successfully!";
    }
}

在实际应用中,你可以将上传的图片链接作为图片的URL,在网页上进行展示。例如:

<img src="http://minio.example.com/mybucket/myimage.jpg">

官方文档