From 8458e64aab474c0fc2f49ae4ff22fb11ce5cf6e2 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期一, 11 十一月 2024 16:55:28 +0800
Subject: [PATCH] 批次新增学员查询条件,新增题目导入接口

---
 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