MinIO相关工具库,上传下载等
2023-12-22 10:56:33
目录结构
配置文件-application.properties
server.port=8888
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
minio.config.accessKey=bunny
minio.config.secretKey=112233
#minio.config.url=http://192.168.31.140:9000
minio.config.url=http://192.168.2.156:9000
config包
在文件夹下新建config
包,在里面新建java类—MinioConfig
package com.example.minio.config;
import io.minio.MinioClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Data
@Configuration
@ConfigurationProperties(prefix = "minio.config")
public class MinioConfig {
private String url;
private String accessKey;
private String secretKey;
@Bean
public MinioClient minioClient() {
return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
}
}
utiles包下新建MinioUtils
package com.example.minio.utils;
import io.minio.*;
import io.minio.errors.*;
import io.minio.messages.*;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Map;
@Component
@Log4j2
public class MinioUtils {
@Autowired
private MinioClient minioClient;
/**
* 判断桶是否存在
*
* @param bucketName 桶名称
* @return 布尔值,是否存在
*/
public boolean bucketExists(String bucketName) {
boolean found = false;
try {
found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
} catch (Exception e) {
e.printStackTrace();
}
return found;
}
/**
* 删除桶的加密配置
*
* @param bucketName 桶名称
* @return 是否删除成功,返回布尔值
*/
public boolean deleteBucketEncryption(String bucketName) {
boolean isDelete = false;
try {
minioClient.deleteBucketEncryption(DeleteBucketEncryptionArgs.builder().build());
isDelete = true;
log.info("删除桶的加密配置 ------ 成功");
} catch (Exception exception) {
log.info("删除桶的加密配置 ------ 失败");
exception.printStackTrace();
}
return isDelete;
}
/**
* 删除桶的生命周期配置。
*
* @param bucketName 桶名称
* @return 返回布尔值,是否删除成功
*/
public boolean deleteBucketLifecycle(String bucketName) {
boolean isDelete = false;
try {
minioClient.deleteBucketLifecycle(DeleteBucketLifecycleArgs.builder().build());
isDelete = true;
log.info("删除桶的生命周期配置 ------ 成功");
} catch (Exception exception) {
exception.printStackTrace();
log.info("删除桶的生命周期配置 ------ 失败");
}
return isDelete;
}
/**
* 删除桶的通知配置。
*
* @param bucketName 桶的名称
* @return 返回布尔值是否删除成功
*/
public boolean deleteBucketNotification(String bucketName) {
boolean isDelete = false;
try {
minioClient.deleteBucketNotification(DeleteBucketNotificationArgs.builder().bucket(bucketName).build());
isDelete = true;
log.info("删除桶的通知配置。 ------ 成功");
} catch (Exception exception) {
exception.printStackTrace();
log.info("删除桶的通知配置。 ------ 失败");
}
return isDelete;
}
/**
* 删除桶中的对象锁配置。
*
* @param bucketName 桶的名称
* @return 返回布尔值是否删除成功
*/
public boolean deleteObjectLockConfiguration(String bucketName) {
boolean isDelete = false;
try {
minioClient.deleteObjectLockConfiguration(DeleteObjectLockConfigurationArgs.builder().bucket(bucketName).build());
isDelete = true;
log.info("删除桶中的对象锁配置。 ------ 成功");
} catch (Exception exception) {
exception.printStackTrace();
log.info("删除桶中的对象锁配置。 ------ 失败");
}
return isDelete;
}
/**
* 删除桶策略配置。
*
* @param bucketName 桶的名称
* @return 返回布尔值是否删除成功
*/
public boolean deleteBucketPolicy(String bucketName) {
boolean isDelete = false;
try {
minioClient.deleteBucketPolicy(DeleteBucketPolicyArgs.builder().bucket(bucketName).build());
isDelete = true;
log.info("删除桶中的对象锁配置。 ------ 成功");
} catch (Exception exception) {
exception.printStackTrace();
log.info("删除桶中的对象锁配置。 ------ 失败");
}
return isDelete;
}
/**
* 删除桶的桶复制配置。
*
* @param bucketName 桶的名称
* @return 返回布尔值是否删除成功
*/
public boolean deleteBucketReplication(String bucketName) {
boolean isDelete = false;
try {
minioClient.deleteBucketReplication(DeleteBucketReplicationArgs.builder().bucket(bucketName).build());
isDelete = true;
log.info("删除桶中的对象锁配置。 ------ 成功");
} catch (Exception exception) {
exception.printStackTrace();
log.info("删除桶中的对象锁配置。 ------ 失败");
}
return isDelete;
}
/**
* 删除桶的标签。
*
* @param bucketName 桶的名称
* @return 返回布尔值是否删除成功
*/
public boolean deleteBucketTags(String bucketName) {
boolean isDelete = false;
try {
minioClient.deleteBucketTags(DeleteBucketTagsArgs.builder().bucket(bucketName).build());
isDelete = true;
log.info("删除桶的标签。 ------ 成功");
} catch (Exception exception) {
exception.printStackTrace();
log.info("删除桶的标签。 ------ 失败");
}
return isDelete;
}
/**
* 获取存储桶的加密配置。
*
* @param bucketName 桶的名称
* @return SseConfiguration 获取成功不为null
*/
public SseConfiguration getBucketEncryption(String bucketName) {
SseConfiguration conf = null;
try {
conf = minioClient.getBucketEncryption(GetBucketEncryptionArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return conf;
}
/**
* 获取存储桶的生命周期配置。
*
* @param bucketName 桶的名称
* @return LifecycleConfiguration 获取成功不为null
*/
public LifecycleConfiguration getBucketLifecycle(String bucketName) {
LifecycleConfiguration lifecycle = null;
try {
lifecycle = minioClient.getBucketLifecycle(GetBucketLifecycleArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return lifecycle;
}
/**
* 获取存储桶的通知配置。
*
* @param bucketName 桶的名称
* @return NotificationConfiguration 获取成功不为null
*/
public NotificationConfiguration getBucketNotification(String bucketName) {
NotificationConfiguration configuration = null;
try {
configuration = minioClient.getBucketNotification(GetBucketNotificationArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return configuration;
}
/**
* 获取桶的桶策略配置。
*
* @param bucketName 桶的名称
* @return String 获取成功不为null
*/
public String getBucketPolicy(String bucketName) {
String config = null;
try {
config = minioClient.getBucketPolicy(GetBucketPolicyArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return config;
}
/**
* 获取桶的桶策略配置
*
* @param bucketName 桶的名称
* @return ReplicationConfiguration 获取成功不为null
*/
public ReplicationConfiguration getBucketReplication(String bucketName) {
ReplicationConfiguration configuration = null;
try {
configuration = minioClient.getBucketReplication(GetBucketReplicationArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return configuration;
}
/**
* 获取存储桶的标签。
*
* @param bucketName 桶的名称
* @return Tags 获取成功不为null
*/
public Tags getBucketTags(String bucketName) {
Tags tags = null;
try {
tags = minioClient.getBucketTags(GetBucketTagsArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return tags;
}
/**
* 获取存储桶的版本控制配置。
*
* @param bucketName 桶的名称
* @return Tags 获取成功不为null
*/
public VersioningConfiguration getBucketVersioning(String bucketName) {
VersioningConfiguration configuration = null;
try {
configuration = minioClient.getBucketVersioning(GetBucketVersioningArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return configuration;
}
/**
* 获取存储桶中的对象锁配置。
*
* @param bucketName 桶的名称
* @return Tags 获取成功不为null
*/
public ObjectLockConfiguration getObjectLockConfiguration(String bucketName) {
ObjectLockConfiguration configuration = null;
try {
configuration = minioClient.getObjectLockConfiguration(GetObjectLockConfigurationArgs.builder().bucket(bucketName).build());
} catch (Exception exception) {
exception.printStackTrace();
}
return configuration;
}
/**
* 列出所有桶的桶信息。
*
* @return Tags 获取成功不为null
*/
public List<Bucket> listBuckets() {
List<Bucket> buckets = null;
try {
buckets = minioClient.listBuckets();
} catch (Exception exception) {
exception.printStackTrace();
}
return buckets;
}
/**
* 创建一个启用了给定区域和对象锁特性的桶。
*
* @param bucketName 桶的名称
* @return boolean 返回是否创建成功
*/
public boolean makeBucket(String bucketName) {
boolean isComplete = false;
try {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
isComplete = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return isComplete;
}
/**
* 移除空桶。
*
* @param bucketName 桶的名称
* @return boolean 是否删除成功
*/
public boolean removeBucket(String bucketName) {
boolean isRemoved = false;
try {
minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());
isRemoved = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return isRemoved;
}
/**
* 设置桶的加密配置。
*
* @param bucketName 同名称
* @param configuration 配置信息
* @return 布尔值是否完成
*/
public boolean setBucketEncryption(String bucketName, SseConfiguration configuration) {
boolean isComplete = false;
try {
minioClient.setBucketEncryption(SetBucketEncryptionArgs
.builder()
.bucket(bucketName)
.config(configuration)
.build());
isComplete = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return isComplete;
}
/**
* 设置桶的版本配置。
*
* @param bucketName 同名称
* @param configuration VersioningConfiguration 配置信息
* @return 布尔值是否完成
*/
public boolean setBucketVersioning(String bucketName, VersioningConfiguration configuration) {
boolean isComplete = false;
try {
minioClient.setBucketVersioning(
SetBucketVersioningArgs.builder().bucket(bucketName).config(configuration).build());
isComplete = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return isComplete;
}
/**
* 设置/修改桶标签
*
* @param bucketName 桶名称
* @param map Map<String, String> map集合
* @return 布尔值是否完成
*/
public boolean setBucketTags(String bucketName, Map<String, String> map) {
boolean isComplete = false;
try {
minioClient.setBucketTags(SetBucketTagsArgs.builder().bucket(bucketName).tags(map).build());
isComplete = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return isComplete;
}
/**
* 复制另一个桶中文件
*
* @param bucketName 桶中名字
* @param objectName 复制名称
* @param sourceBucketName 复制到桶中名称
* @param sourceObjectName 复制完成后名称
* @return 布尔值是否完成
*/
public boolean copyObject(String bucketName, String objectName, String sourceBucketName, String sourceObjectName) {
boolean isComplete = false;
try {
minioClient.copyObject(
CopyObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.source(
CopySource.builder()
.bucket(sourceBucketName)
.object(sourceObjectName)
.build())
.build());
isComplete = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return isComplete;
}
/**
* 删除对象的标记。
*
* @param bucketName 桶中名字
* @param objectName 复制名称
* @return 布尔值是否完成
*/
public boolean deleteObjectTags(String bucketName, String objectName) {
boolean isComplete = false;
try {
minioClient.deleteObjectTags(DeleteObjectTagsArgs.builder().bucket(bucketName).object(objectName).build());
isComplete = true;
} catch (Exception exception) {
exception.printStackTrace();
}
return isComplete;
}
/**
* 下载文件
*
* @param bucketName 桶名称
* @param objectName 对象名称
* @param filename 文件名
*/
public void downloadObject(String bucketName, String objectName, String filename) {
try {
minioClient.downloadObject(
DownloadObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.filename(filename)
.build());
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* 获取文件
*
* @param bucketName 桶名称
* @param objectName 对象名称
*/
public InputStream getObject(String bucketName, String objectName) {
try {
return minioClient.getObject(GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build());
} catch (Exception exception) {
exception.printStackTrace();
return null; // 或者抛出自定义异常
}
}
/**
* 上传文件
*
* @param bucketName 桶名称
* @param filename 文件名
* @param inputStream 输入流
* @param size 大小
*/
public void putObject(String bucketName, String filename, InputStream inputStream, Long size) {
try {
minioClient.putObject(
PutObjectArgs.builder().bucket(bucketName)
.object(filename)
.stream(inputStream, size, -1)
.build());
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* 上传文件
*
* @param bucketName 桶名称
* @param filename 文件名
* @param contentType 文件类型
* @param inputStream 输入流
* @param size 大小
*/
public void putObject(String bucketName, String filename, String contentType, InputStream inputStream, Long size) {
try {
minioClient.putObject(
PutObjectArgs.builder().bucket(bucketName)
.object(filename)
.stream(inputStream, size, -1)
.contentType(contentType)
.build());
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* 删除文件
*
* @param bucketName 桶名称
* @param objectName 对象名称
*/
public void removeObject(String bucketName, String objectName) {
try {
minioClient.removeObject(
RemoveObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build());
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
文章来源:https://blog.csdn.net/weixin_46533577/article/details/135075855
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!