This commit is contained in:
XSWL1018 2024-06-21 18:49:39 +08:00
parent 306eb37b5b
commit decaec2d5a
3 changed files with 30 additions and 14 deletions

View File

@ -32,4 +32,4 @@ minio:
url: http://localhost:9000
accessKey:
secretKey:
defaultBuket: ruoyi
defaultBuket:

View File

@ -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("\\", "/");

View File

@ -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<MinioClientConfig.MinioClientEntity> 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);
}