From f0f00e9ba8a755e4317e029d73b69a92ad9f9df1 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: Sat, 14 Sep 2024 17:02:41 +0800
Subject: [PATCH] update
---
exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java | 93 +++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 87 insertions(+), 6 deletions(-)
diff --git a/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java b/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java
index 83c85e2..b350ebc 100644
--- a/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java
+++ b/exam-common/src/main/java/com/gkhy/exam/common/utils/MinioUtils.java
@@ -6,6 +6,10 @@
import com.gkhy.exam.common.config.MinioConfig;
import io.minio.*;
import io.minio.http.Method;
+import io.minio.messages.DeleteError;
+import io.minio.messages.DeleteObject;
+import io.minio.messages.Item;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.FastByteArrayOutputStream;
@@ -13,9 +17,13 @@
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
@Component
+@Slf4j
public class MinioUtils {
@Autowired
private MinioClient minioClient;
@@ -27,15 +35,33 @@
* @return boolean
*/
public Boolean bucketExists(String bucketName) {
- Boolean found;
+ Boolean found=false;
try {
found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
} catch (Exception e) {
- e.printStackTrace();
- return false;
+ log.error("minio校验bucket失败:{}",e.getMessage());
}
return found;
}
+
+ /**
+ * 文件上传 上传完成后请关闭文件流
+ *
+ * @param fileName 带后缀的文件名 检验日期yyyyMMdd加16位随机码
+ * @param stream 文件流 要上传文件的流
+ */
+ public String fileUploader( String fileName, InputStream stream) {
+ try {
+ PutObjectArgs objectArgs = PutObjectArgs.builder().bucket(minioConfig.getBucketName()).object(fileName).stream(stream, stream.available(), -1).contentType("application/octet-stream").build();
+ // 使用putObject上传一个文件到文件分类
+ minioClient.putObject(objectArgs);
+ }catch (Exception e) {
+ log.error("minio上传文件失败:{}",e.getMessage());
+ return null;
+ }
+ return fileName;
+ }
+
/**
* 文件上传
@@ -43,7 +69,7 @@
* @param file 文件
* @return Boolean
*/
- public String upload(MultipartFile file) {
+ public String uploadFile(MultipartFile file) {
String originalFilename = file.getOriginalFilename();
if (StringUtils.isBlank(originalFilename)){
throw new RuntimeException();
@@ -56,7 +82,7 @@
//文件名称相同会覆盖
minioClient.putObject(objectArgs);
} catch (Exception e) {
- e.printStackTrace();
+ log.error("minio上传文件失败:{}",e.getMessage());
return null;
}
return objectName;
@@ -74,7 +100,7 @@
String url = minioClient.getPresignedObjectUrl(build);
return url;
} catch (Exception e) {
- e.printStackTrace();
+ log.error("预览文件失败:{}",e.getMessage());
}
return null;
}
@@ -110,4 +136,59 @@
e.printStackTrace();
}
}
+
+ /**
+ * 删除文件
+ * @param fileName
+ * @return
+ */
+ public boolean removeFile(String fileName){
+ try {
+ RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(minioConfig.getBucketName())
+ .object(fileName).build();
+ minioClient.removeObject(removeObjectArgs);
+ return true;
+ }catch (Exception e){
+ return false;
+ }
+ }
+
+
+ /**
+ * 删除文件夹
+ * @param folderName
+ * @return
+ */
+ public boolean removeFolder(String folderName){
+ try {
+ if(!folderName.endsWith("/")){
+ folderName=folderName+"/";
+ }
+ ListObjectsArgs listObjectsArgs=ListObjectsArgs.builder().bucket(minioConfig.getBucketName()).prefix(folderName).build();
+
+ Iterable<Result<Item>> results = minioClient.listObjects(listObjectsArgs);
+ List<DeleteObject> objectNames=new ArrayList<>();
+ for(Result<Item> result:results){
+ objectNames.add(new DeleteObject(result.get().objectName()));
+ }
+ if(!objectNames.isEmpty()) {
+ RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(minioConfig.getBucketName())
+ .objects(objectNames).build();
+ Iterable<Result<DeleteError>> results1 = minioClient.removeObjects(removeObjectsArgs);
+ for (Result<DeleteError> result : results1) {
+ DeleteError error = result.get();
+ log.error("Error in deleting object {},{}", error.objectName(), error.message());
+ }
+ }
+ RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(minioConfig.getBucketName())
+ .object(folderName).build();
+ minioClient.removeObject(removeObjectArgs);
+ return true;
+ }catch (Exception e){
+ return false;
+ }
+ }
+
+
+
}
--
Gitblit v1.9.2