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