开源对象存储服务(MinIO),正在备受欢迎!

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 本文介绍了MinIO,一个高性能、开源的对象存储服务器,兼容Amazon S3 API,适合存储大量非结构化数据。文章详细讲解了MinIO在Java中的使用方法,包括添加依赖、初始化客户端、基本操作(创建桶、上传/下载/删除对象)和高级功能(设置桶策略、使用预签名URL),并提供了Spring Boot集成MinIO的示例。

原创作者,公众号【IT技术馆】,欢迎关注公众号,转载文章请注明出处哦。

MinIO是一个高性能、开源的对象存储服务器,兼容Amazon S3 API,非常适合用于存储大量非结构化数据。MinIO的轻量级设计使其专为云原生应用而优化,并支持分布式部署,提供高可用性和强一致性。以下是MinIO在Java中的使用详解及示例:

一、添加依赖

要在Java项目中使用MinIO,首先需要添加MinIO Java客户端库的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>最新版本号</version>
</dependency>

注意将“最新版本号”替换为MinIO Java客户端库的当前最新版本号。

二、初始化客户端

在Java代码中,通过以下方式初始化MinIO客户端:

import io.minio.MinioClient;

public class MinioExample {
   
    public static void main(String[] args) {
   
        try {
   
            MinioClient minioClient = MinioClient.builder()
                    .endpoint("http://localhost:9000") // 替换为你的MinIO服务器地址
                    .credentials("YOUR-ACCESS-KEY", "YOUR-SECRET-KEY") // 替换为你的Access Key和Secret Key
                    .build();
            // 使用minioClient进行操作
        } catch (Exception e) {
   
            e.printStackTrace();
        }
    }
}

三、基本操作示例

1. 创建桶

使用MinIO客户端创建一个新的桶:

import io.minio.MakeBucketArgs;
import io.minio.errors.MinioException;

public void createBucket(MinioClient minioClient, String bucketName) throws Exception {
   
    boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
    if (!found) {
   
        minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
        System.out.println("Bucket created: " + bucketName);
    } else {
   
        System.out.println("Bucket already exists: " + bucketName);
    }
}

2. 上传对象

将文件上传到指定的桶中:

import io.minio.PutObjectArgs;
import java.io.File;
import java.io.FileInputStream;

public void uploadObject(MinioClient minioClient, String bucketName, String objectName, String filePath) throws Exception {
   
    minioClient.putObject(
            PutObjectArgs.builder()
                    .bucket(bucketName)
                    .object(objectName)
                    .stream(new FileInputStream(filePath), new File(filePath).length(), -1)
                    .contentType("application/octet-stream")
                    .build()
    );
    System.out.println("Object uploaded: " + objectName);
}

3. 下载对象

从桶中下载对象到本地文件:

import io.minio.GetObjectArgs;
import java.io.File;

public void downloadObject(MinioClient minioClient, String bucketName, String objectName, String destFilePath) throws Exception {
   
    minioClient.getObject(
            GetObjectArgs.builder()
                    .bucket(bucketName)
                    .object(objectName)
                    .build(),
            new File(destFilePath)
    );
    System.out.println("Object downloaded: " + objectName);
}

4. 删除对象

从桶中删除指定的对象:

import io.minio.RemoveObjectArgs;

public void deleteObject(MinioClient minioClient, String bucketName, String objectName) throws Exception {
   
    minioClient.removeObject(
            RemoveObjectArgs.builder()
                    .bucket(bucketName)
                    .object(objectName)
                    .build()
    );
    System.out.println("Object deleted: " + objectName);
}

四、高级功能

1. 设置桶策略

通过设置桶策略,可以控制对桶和对象的访问权限:

import io.minio.SetBucketPolicyArgs;
import java.nio.charset.StandardCharsets;

public void setBucketPolicy(MinioClient minioClient, String bucketName, String policy) throws Exception {
   
    minioClient.setBucketPolicy(
            SetBucketPolicyArgs.builder()
                    .bucket(bucketName)
                    .config(policy.getBytes(StandardCharsets.UTF_8))
                    .build()
    );
    System.out.println("Bucket policy set for: " + bucketName);
}

2. 使用预签名URL

预签名URL允许临时访问对象,无需暴露访问密钥。这个功能在需要分享文件但不想暴露服务器密钥时非常有用。

五、SpringBoot集成MinIO示例

在Spring Boot项目中,可以通过以下步骤集成MinIO:

  1. pom.xml中添加MinIO依赖。
  2. application.ymlapplication.properties中增加MinIO配置。
  3. 创建一个配置类来获取MinIO客户端。
  4. 编写一个工具类来封装对MinIO的操作。

以下是一个简单的Spring Boot集成MinIO的示例:

pom.xml

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>最新版本号</version>
</dependency>

application.yml

minio:
  endpoint: http://localhost:9000
  accesskey: YOUR-ACCESS-KEY
  secretkey: YOUR-SECRET-KEY

MinioConfig.java

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("${minio.endpoint}")
    private String endpoint;

    @Value("${minio.accesskey}")
    private String accesskey;

    @Value("${minio.secretkey}")
    private String secretkey;

    @Bean
    public MinioClient minioClient() {
   
        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accesskey, secretkey)
                .build();
    }
}

MinioUtils.java

import io.minio.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MinioUtils {
   

    @Autowired
    private MinioClient minioClient;

    // 封装创建桶、上传文件等操作的方法...
}

通过以上步骤,你就可以在Spring Boot项目中轻松地使用MinIO进行对象存储操作了。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
7月前
|
对象存储
minio临时凭证直传切换到阿里云oss
minio临时凭证直传切换到阿里云oss
536 1
|
7月前
|
存储 Java 应用服务中间件
MinIO对象存储详细安装教程
MinIO对象存储详细安装教程
908 2
|
7月前
|
NoSQL 安全 Linux
Linux|minio对象存储服务的部署和初步使用总结
Linux|minio对象存储服务的部署和初步使用总结
461 0
|
存储 安全 算法
对象存储服务-Minio
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
823 1
|
6月前
|
存储 SQL 分布式计算
对象存储解决方案 开源对象存储平台 自建对象存储解决方案
对象存储解决方案 开源对象存储平台 自建对象存储解决方案
315 4
|
7月前
|
存储 Java 开发工具
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
699 0
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
|
7月前
|
存储 负载均衡 Cloud Native
【专栏】Minio是一款高性能分布式对象存储服务,以其易用性和可扩展性著称
【4月更文挑战第28天】Minio是一款高性能分布式对象存储服务,以其易用性和可扩展性著称,适用于存储多媒体内容。通过组建Minio集群,可实现高可用性、高性能、可扩展性和数据保护。搭建集群包括安装Minio、配置集群参数、启动节点、验证集群状态、设置访问权限及可选的数据迁移步骤。Minio集群是实现可靠且高性能存储解决方案的理想选择,适合各种应用场景。
364 0
|
7月前
|
存储 对象存储 数据安全/隐私保护
Docker部署MinIO对象存储服务
Docker部署MinIO对象存储服务
309 0
|
7月前
|
存储 消息中间件 Ubuntu
如何在 Ubuntu 20.04 上以独立模式设置 MinIO 对象存储服务器
在本教程中,将通过以下方式设置 MinIO 的独立部署: - 在运行 Ubuntu 20.04 的服务器上安装 MinIO 服务器。 - 个人计算机上安装 MinIO 客户端并将其配置为与 MinIO 服务器通信。 - 设置数字证书以保护服务器和客户端之间的通信(包括通过 MinIO 控制台)。
527 1
|
7月前
|
存储 Cloud Native 数据挖掘
MinIO作为一种开源的对象存储系统,具有以下核心特点
MinIO作为一种开源的对象存储系统,具有以下核心特点
380 0