From aea81128444acb8ca9a90bc7ef04758bf2cd284d Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期三, 23 八月 2023 14:44:22 +0800 Subject: [PATCH] 重构minio和mqtt配置信息获取 重构minio工具类 区分生产环境和开发环境配置信息 --- ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java | 157 +++++++++++++++++++++++++++++----------------------- 1 files changed, 87 insertions(+), 70 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java index c063b73..ff3e870 100644 --- a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java +++ b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java @@ -2,13 +2,14 @@ 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; import io.minio.messages.*; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import java.io.*; import java.util.*; import java.util.concurrent.TimeUnit; @@ -22,19 +23,23 @@ **/ @SuppressWarnings("ALL") @Slf4j(topic = "minio") +@Component public class MinioUtils { + + @Resource + MinioClient minioClient; /** * 鍒ゆ柇妗舵槸鍚﹀瓨鍦� */ - public static boolean exitsBucket(String bucketName) { + public 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); + found = minioClient.bucketExists(bucketExistsArgs); } catch (Exception ex) { log.error("minio鍒ゆ柇妗跺瓨鍦ㄥ紓甯革細", ex.getMessage()); @@ -45,14 +50,14 @@ /** * 鍒涘缓妗�,骞惰缃《绛栫暐涓哄叕鍏� */ - public static boolean createBucket(String bucketName) { + public boolean createBucket(String bucketName) { try { if (StringUtils.isEmpty(bucketName)) { return false; } /*鍒涘缓妗�*/ MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build(); - MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs); + minioClient.makeBucket(makeBucketArgs); /*璁剧疆绛栫暐*/ String sb = "{\"Version\":\"2012-10-17\"," + "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" + @@ -72,7 +77,7 @@ queueConfiguration.setQueue("arn:minio:sqs::_:mqtt"); //璁剧疆浜嬩欢 - List<EventType> events=new ArrayList<>(); + List<EventType> events = new ArrayList<>(); events.add(EventType.OBJECT_REMOVED_ANY); events.add(EventType.OBJECT_CREATED_ANY); queueConfiguration.setEvents(events); @@ -82,8 +87,8 @@ SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder() .bucket(bucketName) .config(config).build(); - MinioClientSingleton.getMinioClient().setBucketPolicy(setBucketPolicyArgs); - MinioClientSingleton.getMinioClient().setBucketNotification(setBucketNotificationArgs); + minioClient.setBucketPolicy(setBucketPolicyArgs); + minioClient.setBucketNotification(setBucketNotificationArgs); return true; } catch (Exception ex) { @@ -97,11 +102,11 @@ * * @param bucket 妗跺悕绉� */ - public static boolean removeBucket(String bucket) { + public boolean removeBucket(String bucket) { try { boolean found = exitsBucket(bucket); if (found) { - Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder().bucket(bucket).build()); + Iterable<Result<Item>> myObjects = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucket).build()); for (Result<Item> result : myObjects) { Item item = result.get(); //鏈夊璞℃枃浠讹紝鍒欏垹闄ゅけ璐� @@ -110,7 +115,7 @@ } } // 鍒犻櫎`bucketName`瀛樺偍妗讹紝娉ㄦ剰锛屽彧鏈夊瓨鍌ㄦ《涓虹┖鏃舵墠鑳藉垹闄ゆ垚鍔熴�� - MinioClientSingleton.getMinioClient().removeBucket(RemoveBucketArgs.builder().bucket(bucket).build()); + minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucket).build()); found = exitsBucket(bucket); return !found; } @@ -125,9 +130,9 @@ * * @return */ - public static List<Bucket> getListBuckets() { + public List<Bucket> getListBuckets() { try { - return MinioClientSingleton.getMinioClient().listBuckets(); + return minioClient.listBuckets(); } catch (Exception e) { e.printStackTrace(); } @@ -143,7 +148,7 @@ * @param expires 澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ * @return */ - public static String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) { + public String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) { String url = ""; if (exitsBucket(bucketName)) { try { @@ -153,7 +158,7 @@ .object(objectName) .expiry(expires, timeUnit) .build(); - url = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); } catch (Exception ex) { log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage()); } @@ -171,7 +176,7 @@ * @鍒涘缓鏃堕棿 2023/5/18 12:16 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static String putObjectAndGetUrl(String bucketName, MultipartFile file) { + public String putObjectAndGetUrl(String bucketName, MultipartFile file) { if (!exitsBucket(bucketName)) { createBucket(bucketName); } @@ -200,7 +205,7 @@ .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + minioClient.putObject(putObjectArgs); inputStream.close(); /*鑾峰彇url*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs @@ -209,7 +214,7 @@ .object(fileName) .method(Method.GET) .build(); - String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { @@ -226,7 +231,7 @@ * @鍒涘缓鏃堕棿 2023/5/18 12:16 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { + public String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { if (!exitsBucket(bucketName)) { createBucket(bucketName); } @@ -255,7 +260,7 @@ .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + minioClient.putObject(putObjectArgs); inputStream.close(); /*鑾峰彇url*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs @@ -264,7 +269,7 @@ .object(fileName) .method(Method.GET) .build(); - String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { @@ -280,12 +285,12 @@ * @param objectName 瀵硅薄鍚嶇О * @return boolean */ - public static boolean removeObject(String bucket, String objectName) { + public boolean removeObject(String bucket, String objectName) { try { boolean exsit = exitsBucket(bucket); if (exsit) { RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(objectName).build(); - MinioClientSingleton.getMinioClient().removeObject(removeObjectArgs); + minioClient.removeObject(removeObjectArgs); return true; } } catch (Exception e) { @@ -300,7 +305,7 @@ * @param objectNames 瀵硅薄鍚嶇О * @return boolean */ - public static boolean removeObjects(String bucket, List<String> objectNames) { + public boolean removeObjects(String bucket, List<String> objectNames) { if (exitsBucket(bucket)) { try { List<DeleteObject> objects = new LinkedList<>(); @@ -308,7 +313,7 @@ objects.add(new DeleteObject(str)); } RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build(); - Iterable<Result<DeleteError>> results = MinioClientSingleton.getMinioClient().removeObjects(removeObjectsArgs); + Iterable<Result<DeleteError>> results = minioClient.removeObjects(removeObjectsArgs); /*鍒犻櫎瀹岄亶鍘嗙粨鏋滐紝鍚﹀垯鍒犱笉鎺�*/ for (Result<DeleteError> result : results) { DeleteError error = result.get(); @@ -329,13 +334,37 @@ * @param bucket 妗跺悕绉� * @return {@link List}<{@link String}> */ - public static List<String> getBucketObjectName(String bucket) { + public List<String> getBucketObjectName(String bucket) { boolean exsit = exitsBucket(bucket); if (exsit) { List<String> listObjetcName = new ArrayList<>(); try { ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().bucket(bucket).build(); - Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs); + Iterable<Result<Item>> myObjects = minioClient.listObjects(listObjectsArgs); + for (Result<Item> result : myObjects) { + Item item = result.get(); + listObjetcName.add(item.objectName()); + } + return listObjetcName; + } catch (Exception ex) { + log.error("minio鑾峰彇妗朵笅瀵硅薄寮傚父锛�" + ex.getMessage()); + } + } + return null; + } + + /** + * 鑾峰彇鍗曚釜妗朵腑鐨勬墍鏈夋枃浠跺璞″悕绉� + * @param [bucket,prefix] + * @return {@link List}<{@link String}> + */ + public List<String> getBucketObjectName(String bucket, String prefix) { + boolean exsit = exitsBucket(bucket); + if (exsit) { + List<String> listObjetcName = new ArrayList<>(); + try { + ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix(prefix).bucket(bucket).build(); + Iterable<Result<Item>> myObjects = minioClient.listObjects(listObjectsArgs); for (Result<Item> result : myObjects) { Item item = result.get(); listObjetcName.add(item.objectName()); @@ -355,7 +384,7 @@ * @param objectName 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�) * @return */ - public static String getBucketObjectUrl(String bucketName, String objectName) { + public String getBucketObjectUrl(String bucketName, String objectName) { try { if (!exitsBucket(bucketName)) { return ""; @@ -366,7 +395,9 @@ .object(objectName) .method(Method.GET) .build(); - return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); + String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); + return ObjectUrl; } catch (Exception ex) { log.error("minio鑾峰彇瀵硅薄URL寮傚父" + ex.getMessage()); } @@ -382,7 +413,7 @@ * @param size 饧も缉 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { + public boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -393,7 +424,7 @@ .stream(stream, size, -1) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃stream)寮傚父" + ex.getMessage()); @@ -409,7 +440,7 @@ * @param file 饨備欢 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) { + public boolean uploadObject(String bucketName, String objectName, File file, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -421,7 +452,7 @@ .stream(fileInputStream, file.length(), -1) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); @@ -437,7 +468,7 @@ * @param MultipartFile 饨備欢 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) { + public boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -449,7 +480,7 @@ .stream(inputStream, multipartFile.getSize(), -1) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); @@ -465,7 +496,7 @@ * @param MultipartFile 饨備欢 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) { + public boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -482,7 +513,7 @@ .stream(inputStream, multipartFile.getSize(), -1) .contentType(contextType) .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); @@ -498,7 +529,7 @@ * @param localFilePathName * @return */ - public static boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) { + public boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -514,7 +545,7 @@ .filename(localFilePathName) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().uploadObject(uploadObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.uploadObject(uploadObjectArgs); return true; } catch (Exception e) { log.error("minio upload object file error " + e.getMessage()); @@ -530,42 +561,28 @@ * @鍒涘缓鏃堕棿 2023/2/6 10:32 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) { - Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder() + public Iterable<Result<Item>> getObjectsByBucket(String bucketName) { + Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder() .bucket(bucketName) .recursive(true) .build()); return listObjects; } - public static void main(String[] args) { - // /*鍒犻櫎妗�*/ - // boolean b = removeBucket("lsy"); - // log.info(String.valueOf(b)); - // /*鍒涘缓妗�*/ - // boolean lsy = createBucket("lsy"); - // log.info(String.valueOf(lsy)); - // /*鍒ゆ柇妗舵槸鍚﹀瓨鍦�*/ - // boolean pic = exitsBucket("lsy"); - // log.info(String.valueOf(pic)); - /*鏌ヨ鎵�鏈夋《*/ - // List<Bucket> listBuckets = getListBuckets(); - // for (Bucket bucket : listBuckets) { - // log.info(bucket.name()); - // } - String bucket = "lsy"; - String filename = UUID.randomUUID().toString().replace("-", "") + "pic.jpeg"; - String fileFullPath = "C:\\Users\\Administrator\\Desktop\\寰俊鎴浘_20230518102605.png"; - // uploadObject(bucket, filename, fileFullPath, "Image/jpeg"); - // String url = getObjectWithExpired(bucket, filename, 10, SECONDS); - // System.out.println(url); - boolean b = removeBucket(bucket); - System.out.println(b); - // boolean b = uploadObjectBylocalPath(bucket, filename, fileFullPath); - // System.out.println(b); - //String url = getObjectWithExpired(bucket, filename, 10000); - // - //String url = getBucketObject(bucket, filename); - // System.out.println(url); package com.example.minio; + /** + * @鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞� + * @鍙傛暟 [bucketName,prefix] + * @杩斿洖鍊� java.lang.Iterable<io.minio.Result < io.minio.messages.Item>> + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/6 10:32 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + public Iterable<Result<Item>> getObjectsByBucket(String bucketName, String prefix) { + Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder() + .bucket(bucketName) + .prefix(prefix) + .recursive(true) + .build()); + return listObjects; } } \ No newline at end of file -- Gitblit v1.9.3