From 08674069805545af85ef872e28ee28e5fdc30cee Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期五, 04 八月 2023 13:19:11 +0800
Subject: [PATCH] 优化minio工具类 集成webrtc-streamer部署启动 集成minio部署启动 集成mediaMtx部署启动

---
 ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java |  135 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 113 insertions(+), 22 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
index 49b4e1d..46a3ded 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java
@@ -1,5 +1,7 @@
 package com.ruoyi.device.hiksdk.util.minio;
 
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.device.hiksdk.config.MinioClientSingleton;
 import io.minio.*;
 import io.minio.http.Method;
@@ -9,6 +11,7 @@
 import io.minio.messages.Item;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.multipart.MultipartFile;
+
 import java.io.*;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -30,6 +33,10 @@
     public static boolean exitsBucket(String bucketName) {
         boolean found = false;
         try {
+            if(StringUtils.isEmpty(bucketName))
+            {
+                return false;
+            }
             BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build();
             found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs);
         } catch (Exception ex) {
@@ -43,6 +50,10 @@
      */
     public static boolean createBucket(String bucketName) {
         try {
+            if(StringUtils.isEmpty(bucketName))
+            {
+                return false;
+            }
             /*鍒涘缓妗�*/
             MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build();
             MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs);
@@ -131,6 +142,10 @@
                 log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage());
             }
         }
+        else
+        {
+            createBucket(bucketName);
+        }
         return url;
     }
 
@@ -143,18 +158,25 @@
      * @淇敼浜哄拰鍏跺畠淇℃伅
      */
     public static String putObjectAndGetUrl(String bucketName, MultipartFile file) {
+         if(!exitsBucket(bucketName))
+        {
+            createBucket(bucketName);
+        }
         //鍒ゆ柇鏂囦欢鏄惁涓虹┖
         if (null == file || 0 == file.getSize()) {
             log.error("涓婁紶minio鏂囦欢鏈嶅姟鍣ㄩ敊璇紝涓婁紶鏂囦欢涓虹┖");
         }
         boolean exsit = exitsBucket(bucketName);
         if (!exsit) {
-            log.error(bucketName + "-妗朵笉瀛樺湪");
+            boolean bucket = createBucket(bucketName);
+            if (bucket) {
+                log.info(bucketName + "-妗朵笉瀛樺湪,鎴愬姛鍒涘缓妗�");
+            }
         }
         //鏂囦欢鍚�
         String originalFilename = file.getOriginalFilename();
         //鏂扮殑鏂囦欢鍚�
-        String fileName = UUID.randomUUID().toString().replace("-", "") + originalFilename;
+        String fileName = IdUtils.fastSimpleUUID() + "_" + originalFilename;
         try {
             InputStream inputStream = file.getInputStream();
             /*涓婁紶瀵硅薄*/
@@ -172,8 +194,67 @@
                     .builder()
                     .bucket(bucketName)
                     .object(fileName)
+                    .method(Method.GET)
                     .build();
-            return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
+            return ObjectUrl;
+        } catch (Exception ex) {
+            log.error("涓婁紶瀵硅薄杩斿洖url寮傚父锛�" + ex.getMessage());
+        }
+        return "";
+    }
+
+    /**
+     * @鎻忚堪 涓婁紶MultipartFile鏂囦欢杩斿洖url
+     * @鍙傛暟 [bucketName, file]
+     * @杩斿洖鍊� java.lang.String
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/5/18 12:16
+     * @淇敼浜哄拰鍏跺畠淇℃伅
+     */
+    public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) {
+        if(!exitsBucket(bucketName))
+        {
+            createBucket(bucketName);
+        }
+        //鍒ゆ柇鏂囦欢鏄惁涓虹┖
+        if (null == file || 0 == file.getSize()) {
+            log.error("涓婁紶minio鏂囦欢鏈嶅姟鍣ㄩ敊璇紝涓婁紶鏂囦欢涓虹┖");
+        }
+        boolean exsit = exitsBucket(bucketName);
+        if (!exsit) {
+            boolean bucket = createBucket(bucketName);
+            if (bucket) {
+                log.info(bucketName + "-妗朵笉瀛樺湪,鎴愬姛鍒涘缓妗�");
+            }
+        }
+        //鏂囦欢鍚�
+        String originalFilename = file.getOriginalFilename();
+        //鏂扮殑鏂囦欢鍚�
+        String fileName = folder + "/" + IdUtils.fastSimpleUUID() + "_" + originalFilename;
+        try {
+            InputStream inputStream = file.getInputStream();
+            /*涓婁紶瀵硅薄*/
+            PutObjectArgs putObjectArgs = PutObjectArgs
+                    .builder()
+                    .bucket(bucketName)
+                    .object(fileName)
+                    .stream(inputStream, file.getSize(), -1)
+                    .contentType(file.getContentType())
+                    .build();
+            MinioClientSingleton.getMinioClient().putObject(putObjectArgs);
+            inputStream.close();
+            /*鑾峰彇url*/
+            GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs
+                    .builder()
+                    .bucket(bucketName)
+                    .object(fileName)
+                    .method(Method.GET)
+                    .build();
+            String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
+            String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
+            return ObjectUrl;
         } catch (Exception ex) {
             log.error("涓婁紶瀵硅薄杩斿洖url寮傚父锛�" + ex.getMessage());
         }
@@ -271,6 +352,7 @@
                     .builder()
                     .bucket(bucketName)
                     .object(objectName)
+                    .method(Method.GET)
                     .build();
             return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs);
         } catch (Exception ex) {
@@ -290,6 +372,10 @@
      */
     public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) {
         try {
+            if(!exitsBucket(bucketName))
+            {
+                createBucket(bucketName);
+            }
             PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                     .bucket(bucketName)
                     .object(objectName)
@@ -314,6 +400,10 @@
      */
     public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) {
         try {
+            if(!exitsBucket(bucketName))
+            {
+                createBucket(bucketName);
+            }
             FileInputStream fileInputStream = new FileInputStream(file);
             PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                     .bucket(bucketName)
@@ -339,13 +429,9 @@
      */
     public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) {
         try {
-            if (bucketName.isEmpty()) {
-                log.error("bucket鍚嶇О涓虹┖");
-                return false;
-            }
-            if (objectName.isEmpty()) {
-                log.error("瀵硅薄鍚嶇О涓虹┖");
-                return false;
+            if(!exitsBucket(bucketName))
+            {
+                createBucket(bucketName);
             }
             InputStream inputStream = multipartFile.getInputStream();
             PutObjectArgs putObjectArgs = PutObjectArgs.builder()
@@ -372,6 +458,10 @@
      */
     public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) {
         try {
+            if(!exitsBucket(bucketName))
+            {
+                createBucket(bucketName);
+            }
             if (multipartFile == null) {
                 log.error("涓婁紶鏂囦欢涓虹┖");
                 return false;
@@ -400,11 +490,11 @@
      * @param localFilePathName
      * @return
      */
-    public static boolean uploadObject(String bulkName, String objectName, String localFilePathName, String contextType) {
+    public static boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) {
         try {
-            if (!exitsBucket(bulkName)) {
-                log.debug(bulkName + "涓嶅瓨鍦�");
-                return false;
+            if(!exitsBucket(bucketName))
+            {
+                createBucket(bucketName);
             }
             File file = new File(localFilePathName);
             if (!file.exists()) {
@@ -412,7 +502,7 @@
                 return false;
             }
             UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder()
-                    .bucket(bulkName)
+                    .bucket(bucketName)
                     .object(objectName)
                     .filename(localFilePathName)
                     .contentType(contextType)
@@ -424,15 +514,16 @@
             return false;
         }
     }
+
     /**
-     *@鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞�
-     *@鍙傛暟 [bucketName]
-     *@杩斿洖鍊� java.lang.Iterable<io.minio.Result<io.minio.messages.Item>>
-     *@鍒涘缓浜� 鍒樿嫃涔�
-     *@鍒涘缓鏃堕棿 2023/2/6 10:32
-     *@淇敼浜哄拰鍏跺畠淇℃伅
+     * @鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞�
+     * @鍙傛暟 [bucketName]
+     * @杩斿洖鍊� java.lang.Iterable<io.minio.Result < io.minio.messages.Item>>
+     * @鍒涘缓浜� 鍒樿嫃涔�
+     * @鍒涘缓鏃堕棿 2023/2/6 10:32
+     * @淇敼浜哄拰鍏跺畠淇℃伅
      */
-    public static Iterable<Result<Item>> getObjectsByBucket(String bucketName)  {
+    public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) {
         Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder()
                 .bucket(bucketName)
                 .recursive(true)

--
Gitblit v1.9.3