‘liusuyi’
2023-09-21 c6a05cc862a98abd7d16560e7ac2ab9bf4e12feb
ard-work/src/main/java/com/ruoyi/utils/minio/MinioUtil.java
@@ -3,6 +3,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import io.minio.*;
import io.minio.errors.MinioException;
import io.minio.http.Method;
import io.minio.messages.*;
import lombok.extern.slf4j.Slf4j;
@@ -10,7 +11,10 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
@@ -79,17 +83,33 @@
    }
    /**
     * 创建桶,并设置桶策略为公共
     * 创建桶
     */
    public static boolean createBucket(String bucket) {
        try {
            if (StringUtils.isEmpty(bucket)) {
                return false;
            }
            /*创建桶*/
            //创建桶
            MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucket).build();
            minioClient.makeBucket(makeBucketArgs);
            /*设置策略*/
            setBucketPolicy(bucket);//设置桶策略
            setBucketNotificationToMqtt(bucket);//设置桶通知到MQTT
            return true;
        } catch (Exception ex) {
            log.error("minio创建桶异常:", ex.getMessage());
            return false;
        }
    }
    /**
     * 设置桶策略
     * 刘苏义
     * 2023/9/20 10:01:39
     */
    public static boolean setBucketPolicy(String bucket) {
        try {
            //设置策略
            String sb = "{\"Version\":\"2012-10-17\"," +
                    "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" +
                    "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," +
@@ -100,30 +120,40 @@
                    .bucket(bucket)
                    .config(sb)
                    .build();
            /*设置通知mqtt*/
            //设置mqtt主题
            minioClient.setBucketPolicy(setBucketPolicyArgs);
            return true;
        } catch (Exception ex) {
            log.error("设置桶策略异常:" + ex.getMessage());
            return false;
        }
    }
    /**
     * 设置桶通知到MQTT
     * 刘苏义
     * 2023/9/20 9:59:40
     */
    public static boolean setBucketNotificationToMqtt(String bucket) {
        try {
            //设置通知mqtt
            NotificationConfiguration config = new NotificationConfiguration();
            List<QueueConfiguration> queueConfigurations = new ArrayList<>();
            QueueConfiguration queueConfiguration = new QueueConfiguration();
            queueConfiguration.setQueue("arn:minio:sqs::_:mqtt");
            //设置事件
            List<EventType> events = new ArrayList<>();
            events.add(EventType.OBJECT_REMOVED_ANY);
            events.add(EventType.OBJECT_CREATED_ANY);
            queueConfiguration.setEvents(events);
            queueConfigurations.add(queueConfiguration);
            config.setQueueConfigurationList(queueConfigurations);
            SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder()
                    .bucket(bucket)
                    .config(config).build();
            minioClient.setBucketPolicy(setBucketPolicyArgs);
            minioClient.setBucketNotification(setBucketNotificationArgs);
            return true;
        } catch (Exception ex) {
            log.error("minio创建桶异常:", ex.getMessage());
            log.error("设置桶通知异常:" + ex.getMessage());
            return false;
        }
    }