Java minio工具类
时间: 2023-12-01 18:39:22 浏览: 160
Java minio工具类是基于Java sdk编写的工具类,用于操作MinIO对象存储服务器。它包含了上传文件、设置文件contentType类型、设置全局访问策略等方法。在使用Java minio工具类之前,需要在pom.xml中引入minio依赖,并在yml文件中配置MinIO服务所在地址、存储桶名称、访问的key和秘钥等信息。通过Java minio工具类,可以方便地对MinIO对象存储服务器进行操作。
相关问题
Java封装minio 工具类
### Java 封装 MinIO 工具类
为了方便在项目中使用 MinIO 进行对象存储操作,可以通过创建一个工具类来封装常见的 MinIO 操作方法。下面是一个基于 Spring Boot 和 MinIO SDK 的 Java 工具类示例。
#### Maven 依赖配置
首先,在项目的 `pom.xml` 文件中添加 MinIO SDK 的依赖:
```xml
<dependency>
<groupId>io.minio</groupId>
<artifactId|minio|version>8.5.7</version>
</dependency>
```
#### 创建 MinIOConfig 类
定义一个配置类用于初始化 MinIO 客户端连接参数:
```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();
}
}
```
#### 构建 MinIOUtil 工具类
接下来构建实际的操作工具类,该类提供了上传文件、下载文件等功能的方法实现:
```java
import io.minio.*;
import io.minio.errors.*;
import java.io.InputStream;
import java.util.List;
@Component
public class MinIOUtil {
@Autowired
private MinioClient minioClient;
/**
* 判断桶是否存在
*/
public boolean bucketExists(String bucketName) throws Exception {
try {
return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
/**
* 创建新桶
*/
public void makeBucket(String bucketName) throws Exception {
if (!bucketExists(bucketName)) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
}
/**
* 删除指定名称的桶
*/
public void removeBucket(String bucketName) throws Exception {
minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());
}
/**
* 向指定桶内上传文件流形式的数据
*/
public void uploadFile(String bucketName, String objectName, InputStream inputStream, long fileSize) throws Exception {
PutObjectArgs args = PutObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.stream(inputStream, fileSize, -1L)
.contentType("application/octet-stream")
.build();
minioClient.putObject(args);
}
/**
* 下载文件并返回输入流
*/
public InputStream downloadFile(String bucketName, String objectName) throws Exception {
GetObjectResponse response = minioClient.getObject(GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build());
return response.readAllBytes();
}
/**
* 获取某个桶下的所有文件列表
*/
public List<String> listObjects(String bucketName) throws Exception {
Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucketName).build());
List<String> fileList = Lists.newArrayList();
for (Result<Item> result : results) {
Item item = result.get();
fileList.add(item.objectName());
}
return fileList;
}
/**
* 移除单个文件/对象
*/
public void removeObject(String bucketName, String objectName) throws Exception {
minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build());
}
}
```
通过上述代码实现了对 MinIO 存储系统的常用功能封装,包括但不限于判断桶的存在状态、创建删除桶以及文件级别的增删改查等基础操作[^3]。
minio工具类
### 关于 MinIO 工具类的使用
MinIO 是一种高性能的对象存储解决方案,兼容 Amazon S3 API。它支持多种编程语言 SDK 的集成,便于开发者快速实现对象存储功能[^2]。
以下是基于 Java 编程语言的一个简单示例代码,展示如何利用 MinIO 提供的功能完成基本的操作(如创建 Bucket 和上传文件)。此代码还涵盖了将 Bucket 设置为 Public 的必要步骤[^3]:
#### 创建并初始化 MinIO 客户端
```java
import io.minio.MinioClient;
import io.minio.errors.MinioException;
public class MinioExample {
public static void main(String[] args) throws Exception {
try {
// 初始化 MinIO 客户端实例
MinioClient minioClient = new MinioClient(
"http://localhost:9000", // 替换为目标服务器 URL
"your-access-key", // 访问密钥
"your-secret-key" // 秘密密钥
);
boolean isExist = minioClient.bucketExists("my-bucket");
if (!isExist) {
minioClient.makeBucket("my-bucket"); // 如果不存在,则创建一个新的 bucket
}
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
}
}
}
```
上述代码展示了如何连接到本地运行的 MinIO 实例,并检查是否存在名为 `my-bucket` 的 Bucket。如果该 Bucket 尚未存在,则会自动创建[^1]。
#### 文件上传至指定 Bucket 并设置访问权限
为了使上传的文件可以通过公共链接访问,需确保目标 Bucket 被显式设为 Public。以下是一个完整的例子:
```java
// 继续上一段中的客户端定义...
try {
String objectName = "example-file.txt";
// 上传文件到已存在的 my-bucket 中
minioClient.putObject(
"my-bucket",
objectName,
"/path/to/local/example-file.txt"
);
// 修改 Bucket 权限策略使其公开可读
String policyJson = "{ \"Version\":\"2012-10-17\", "
+ "\"Statement\":[{"
+ " \"Effect\": \"Allow\","
+ " \"Principal\": {\"AWS\": [\"*\"]},"
+ " \"Action\": [\"s3:GetObject\"],"
+ " \"Resource\": [\"arn:aws:s3:::my-bucket/*\"]"
+ "}]}";
minioClient.setBucketPolicy("my-bucket", "", policyJson);
} catch (Exception e) {
System.err.println(e.getMessage());
}
```
以上脚本实现了向特定 Bucket 添加新文件以及调整其安全属性的过程。注意,在实际部署环境中应谨慎处理敏感数据的安全性和隐私保护问题。
###
阅读全文
相关推荐











