Minio 操作工具类
Posted xiaojf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Minio 操作工具类相关的知识,希望对你有一定的参考价值。
maven
<properties> <minio.version>6.0.13</minio.version> </properties>
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>${minio.version}</version> </dependency>
使用springboot初始化
package com.im.oss; import io.minio.MinioClient; import io.minio.ObjectStat; import io.minio.Result; import io.minio.messages.Bucket; import io.minio.messages.Item; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; import org.springframework.util.Assert; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Optional; @Component @RequiredArgsConstructor public class MinioTemplate implements InitializingBean { private final String endpoint; private final String accessKey; private final String secretKey; private MinioClient client; @Override public void afterPropertiesSet() throws Exception { Assert.hasText(endpoint, "Minio url 为空"); Assert.hasText(accessKey, "Minio accessKey为空"); Assert.hasText(secretKey, "Minio secretKey为空"); this.client = new MinioClient(endpoint, accessKey, secretKey); } /** * 创建bucket * * @param bucketName bucket名称 */ @SneakyThrows public void createBucket(String bucketName) { if (!client.bucketExists(bucketName)) { client.makeBucket(bucketName); } } /** * 获取全部bucket * <p> * https://docs.minio.io/cn/java-client-api-reference.html#listBuckets */ @SneakyThrows public List<Bucket> getAllBuckets() { return client.listBuckets(); } /** * 根据bucketName获取信息 * * @param bucketName bucket名称 */ @SneakyThrows public Optional<Bucket> getBucket(String bucketName) { return client.listBuckets().stream().filter(b -> b.name().equals(bucketName)).findFirst(); } /** * 根据bucketName删除信息 * * @param bucketName bucket名称 */ @SneakyThrows public void removeBucket(String bucketName) { client.removeBucket(bucketName); } /** * 根据文件前置查询文件 * * @param bucketName bucket名称 * @param prefix 前缀 * @param recursive 是否递归查询 * @return MinioItem 列表 */ @SneakyThrows public List getAllObjectsByPrefix(String bucketName, String prefix, boolean recursive) { List<Item> list = new ArrayList<>(); Iterable<Result<Item>> objectsIterator = client.listObjects(bucketName, prefix, recursive); if (objectsIterator != null) { Iterator<Result<Item>> iterator = objectsIterator.iterator(); if (iterator != null) { while (iterator.hasNext()) { Result<Item> result = iterator.next(); Item item = result.get(); list.add(item); } } } return list; } /** * 获取文件外链 * * @param bucketName bucket名称 * @param objectName 文件名称 * @param expires 过期时间 <=7 * @return url */ @SneakyThrows public String getObjectURL(String bucketName, String objectName, Integer expires) { return client.presignedGetObject(bucketName, objectName, expires); } /** * 获取文件 * * @param bucketName bucket名称 * @param objectName 文件名称 * @return 二进制流 */ @SneakyThrows public InputStream getObject(String bucketName, String objectName) { return client.getObject(bucketName, objectName); } /** * 上传文件 * * @param bucketName bucket名称 * @param objectName 文件名称 * @param stream 文件流 * @throws Exception https://docs.minio.io/cn/java-client-api-reference.html#putObject */ public void putObject(String bucketName, String objectName, InputStream stream) throws Exception { client.putObject(bucketName, objectName, stream, stream.available(), "application/octet-stream"); } /** * 上传文件 * * @param bucketName bucket名称 * @param objectName 文件名称 * @param stream 文件流 * @param size 大小 * @param contextType 类型 * @throws Exception https://docs.minio.io/cn/java-client-api-reference.html#putObject */ public void putObject(String bucketName, String objectName, InputStream stream, long size, String contextType) throws Exception { client.putObject(bucketName, objectName, stream, size, contextType); } /** * 获取文件信息, 如果抛出异常则说明文件不存在 * * @param bucketName bucket名称 * @param objectName 文件名称 * @throws Exception https://docs.minio.io/cn/java-client-api-reference.html#statObject */ public ObjectStat getObjectInfo(String bucketName, String objectName) throws Exception { return client.statObject(bucketName, objectName); } /** * 删除文件 * * @param bucketName bucket名称 * @param objectName 文件名称 * @throws Exception https://docs.minio.io/cn/java-client-api-reference.html#removeObject */ public void removeObject(String bucketName, String objectName) throws Exception { client.removeObject(bucketName, objectName); } }
以上是关于Minio 操作工具类的主要内容,如果未能解决你的问题,请参考以下文章