From decaec2d5aac2fe80e8a5ad04bb4a1fda4ae8954 Mon Sep 17 00:00:00 2001 From: XSWL1018 <824576966@qq.com> Date: Fri, 21 Jun 2024 18:49:39 +0800 Subject: [PATCH] init --- .../main/resources/application-middleware.yml | 2 +- .../ruoyi/common/utils/file/FileUtils.java | 3 ++ .../middleware/minio/config/MinioConfig.java | 39 ++++++++++++------- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-middleware.yml b/ruoyi-admin/src/main/resources/application-middleware.yml index d11800e..e7e68a5 100644 --- a/ruoyi-admin/src/main/resources/application-middleware.yml +++ b/ruoyi-admin/src/main/resources/application-middleware.yml @@ -32,4 +32,4 @@ minio: url: http://localhost:9000 accessKey: secretKey: - defaultBuket: ruoyi + defaultBuket: diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java index 70816ed..282e1b9 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java @@ -366,6 +366,9 @@ public class FileUtils { public static final String getRelativePath(String filePath) { Path absolute = Paths.get(filePath); + if (!absolute.isAbsolute()){ + return filePath; + } Path root = absolute.getRoot(); Path normalize = absolute.normalize(); return normalize.subpath(root.getNameCount(), normalize.getNameCount()).toString().replace("\\", "/"); diff --git a/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/config/MinioConfig.java b/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/config/MinioConfig.java index f1c4f96..7f9c165 100644 --- a/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/config/MinioConfig.java +++ b/ruoyi-middleware/ruoyi-middleware-minio/src/main/java/com/ruoyi/middleware/minio/config/MinioConfig.java @@ -1,20 +1,21 @@ package com.ruoyi.middleware.minio.config; +import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.file.FileOperateUtils; import com.ruoyi.common.utils.file.FileUtils; -import io.minio.MinioClient; -import io.minio.PutObjectArgs; -import io.minio.RemoveObjectArgs; -import io.minio.RemoveObjectsArgs; +import io.minio.*; import io.minio.errors.*; import io.minio.messages.Bucket; +import io.minio.messages.Item; import jakarta.annotation.PostConstruct; import org.apache.http.impl.io.EmptyInputStream; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Configuration; +import java.io.File; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; @@ -43,7 +44,7 @@ public class MinioConfig { public void init() { List collect = minioClientConfig.getSlave().stream().map(item -> { setClient(item); - isBuketExist(item); + isBuketExistOnAnonymous(item); return item; }).toList(); collect.forEach(item -> { @@ -52,7 +53,7 @@ public class MinioConfig { }); MinioClientConfig.MinioClientEntity master = minioClientConfig.getMaster(); setClient(master); - isBuketExist(master); + isBuketExistOnAnonymous(master); masterClient = master; } @@ -77,25 +78,37 @@ public class MinioConfig { } private static void setClient(MinioClientConfig.MinioClientEntity entity){ - try { + if (StringUtils.isEmpty(entity.getAccessKey())){ + MinioClient build = MinioClient.builder().endpoint(entity.getUrl()).build(); + entity.setClient(build); + }else { MinioClient build = MinioClient.builder().endpoint(entity.getUrl()) .credentials(entity.getAccessKey(), entity.getSecretKey()).build(); - build.listBuckets(); entity.setClient(build); - } catch (Exception exception) { - MinioClient build = MinioClient.builder().endpoint(entity.getUrl()).build(); + BucketExistsArgs bucketExistArgs = BucketExistsArgs.builder().bucket(entity.getDefaultBuket()).build(); + try { + boolean b = entity.getClient().bucketExists(bucketExistArgs); + if (!b){ + throw new RuntimeException("defaultBucket does not exist"); + } + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } entity.setClient(build); } } - private static void isBuketExist(MinioClientConfig.MinioClientEntity entity) { + + private static void isBuketExistOnAnonymous(MinioClientConfig.MinioClientEntity entity) { try { String defaultBuket = entity.getDefaultBuket(); if(StringUtils.isEmpty(defaultBuket)){ throw new RuntimeException("defaultBuket without a default value "); } - RemoveObjectArgs remove = RemoveObjectArgs.builder().bucket(entity.getDefaultBuket()).object("test").build(); - entity.getClient().removeObject(remove); + PutObjectArgs putObjectArgs= PutObjectArgs.builder().object(FileUtils.getRelativePath(RuoYiConfig.getProfile())+ "/") + .stream(EmptyInputStream.nullInputStream(),0,-1).bucket(entity.getDefaultBuket()).build(); + entity.getClient().putObject(putObjectArgs); + }catch (Exception e){ throw new RuntimeException(e); }