From 773c502d0b2f2732f858946a32f41bf13e1bcdff Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期三, 31 五月 2023 08:48:39 +0800 Subject: [PATCH] 提交 --- /dev/null | 186 -------------- ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java | 10 .gitignore | 2 ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java | 76 +++++ ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java | 473 ++++++++++++++++++++++++++++++++++++ 5 files changed, 554 insertions(+), 193 deletions(-) diff --git a/.gitignore b/.gitignore index c96c47b..d276cbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ /ardLog/logs/ /ardLog/ - +/ruoyi-ui ###################################################################### # Build Tools diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java new file mode 100644 index 0000000..31916f8 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java @@ -0,0 +1,76 @@ +package com.ruoyi.device.hiksdk.config; + +import io.minio.MinioClient; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.Properties; + +/** + * @Description: + * @ClassName: MinioClientSingleton + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�05鏈�18鏃�9:32 + * @Version: 1.0 + **/ + +@Slf4j(topic = "minio") +@Data +@Component +public class MinioClientSingleton { + + private static String domainUrl; + private static String accessKey; + private static String secretKey; + + private volatile static MinioClient minioClient; + + static { + domainUrl = getYmlNew("minio.endpoint"); + accessKey = getYmlNew("minio.accessKey"); + secretKey = getYmlNew("minio.secretKey"); + log.info("minio淇℃伅锛�" + domainUrl + "(" + accessKey + "/" + secretKey + ")"); + } + + /** + * 鑾峰彇minio瀹㈡埛绔疄渚� + * + * @return {@link MinioClient} + */ + public static MinioClient getMinioClient() { + if (minioClient == null) { + synchronized (MinioClientSingleton.class) { + if (minioClient == null) { + minioClient = MinioClient.builder() + .endpoint(domainUrl) + .credentials(accessKey, secretKey) + .build(); + } + } + } + return minioClient; + } + + /*yml閰嶇疆淇℃伅鑾峰彇*/ + public static String getYmlNew(String key) { + Resource resource = new ClassPathResource("application.yml"); + Properties properties = null; + try { + YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean(); + yamlFactory.setResources(resource); + properties = yamlFactory.getObject(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return properties.get(key).toString(); + } + +} + diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioConfig.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioConfig.java deleted file mode 100644 index b2fb22f..0000000 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.ruoyi.device.hiksdk.config; - -import io.minio.MinioClient; -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @ClassName: MinioConfig - * @Description: minio閰嶇疆绫� - * @Author: Administrator - * @Date: 2023骞�01鏈�28鏃� 14:28 - * @Version: 1.0 - **/ - -@Data -@Configuration -public class MinioConfig { - - @Value("${minio.endpoint}") - private String endpoint; - @Value("${minio.accessKey}") - private String minioAccessKey; - @Value("${minio.secretKey}") - private String minioSecretKey; - - /** - * 娉ㄥ叆minio 瀹㈡埛绔� - * - * @return - */ - @Bean - public MinioClient minioClient() { - return MinioClient.builder() - .endpoint(endpoint) - .credentials(minioAccessKey, minioSecretKey) - .build(); - } -} 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 new file mode 100644 index 0000000..49b4e1d --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minio/MinioUtils.java @@ -0,0 +1,473 @@ +package com.ruoyi.device.hiksdk.util.minio; + +import com.ruoyi.device.hiksdk.config.MinioClientSingleton; +import io.minio.*; +import io.minio.http.Method; +import io.minio.messages.Bucket; +import io.minio.messages.DeleteError; +import io.minio.messages.DeleteObject; +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; + +/** + * @Description: Minio瀹㈡埛绔伐鍏风被 + * @ClassName: MinioUtils + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�05鏈�18鏃�9:34 + * @Version: 1.0 + **/ +@SuppressWarnings("ALL") +@Slf4j(topic = "minio") +public class MinioUtils { + + /** + * 鍒ゆ柇妗舵槸鍚﹀瓨鍦� + */ + public static boolean exitsBucket(String bucketName) { + boolean found = false; + try { + BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build(); + found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs); + } catch (Exception ex) { + log.error("minio鍒ゆ柇妗跺瓨鍦ㄥ紓甯革細", ex.getMessage()); + } + return found; + } + + /** + * 鍒涘缓妗�,骞惰缃《绛栫暐涓哄叕鍏� + */ + public static boolean createBucket(String bucketName) { + try { + /*鍒涘缓妗�*/ + MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build(); + MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs); + /*璁剧疆绛栫暐*/ + String sb = "{\"Version\":\"2012-10-17\"," + + "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" + + "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," + + "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + + "\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\",\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" + + bucketName + "/*\"]}]}"; + SetBucketPolicyArgs setBucketPolicyArgs = SetBucketPolicyArgs.builder() + .bucket(bucketName) + .config(sb) + .build(); + MinioClientSingleton.getMinioClient().setBucketPolicy(setBucketPolicyArgs); + return true; + } catch (Exception ex) { + log.error("minio鍒涘缓妗跺紓甯革細", ex.getMessage()); + return false; + } + } + + /** + * 鍒犻櫎涓�涓《 + * + * @param bucket 妗跺悕绉� + */ + public static boolean removeBucket(String bucket) { + try { + boolean found = exitsBucket(bucket); + if (found) { + Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder().bucket(bucket).build()); + for (Result<Item> result : myObjects) { + Item item = result.get(); + //鏈夊璞℃枃浠讹紝鍒欏垹闄ゅけ璐� + if (item.size() > 0) { + return false; + } + } + // 鍒犻櫎`bucketName`瀛樺偍妗讹紝娉ㄦ剰锛屽彧鏈夊瓨鍌ㄦ《涓虹┖鏃舵墠鑳藉垹闄ゆ垚鍔熴�� + MinioClientSingleton.getMinioClient().removeBucket(RemoveBucketArgs.builder().bucket(bucket).build()); + found = exitsBucket(bucket); + return !found; + } + } catch (Exception ex) { + log.error("鍒犻櫎妗跺紓甯革細" + ex.getMessage()); + } + return false; + } + + /** + * 鏌ヨ鎵�鏈夋《鏂囦欢 + * + * @return + */ + public static List<Bucket> getListBuckets() { + try { + return MinioClientSingleton.getMinioClient().listBuckets(); + } catch (Exception e) { + e.printStackTrace(); + } + return Collections.emptyList(); + } + + /** + * 鐢熸垚涓�涓狦ET璇锋眰鐨勫甫鏈夊け鏁堟椂闂寸殑鍒嗕韩閾炬帴銆� + * 澶辨晥鏃堕棿榛樿鏄�7澶┿�� + * + * @param bucketName 瀛樺偍妗跺悕绉� + * @param objectName 瀛樺偍妗堕噷鐨勫璞″悕绉� + * @param expires 澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ + * @return + */ + public static String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) { + String url = ""; + if (exitsBucket(bucketName)) { + try { + GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder() + .method(Method.GET) + .bucket(bucketName) + .object(objectName) + .expiry(expires, timeUnit) + .build(); + url = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + } catch (Exception ex) { + log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage()); + } + } + return url; + } + + /** + * @鎻忚堪 涓婁紶MultipartFile鏂囦欢杩斿洖url + * @鍙傛暟 [bucketName, file] + * @杩斿洖鍊� java.lang.String + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/5/18 12:16 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + public static String putObjectAndGetUrl(String bucketName, MultipartFile file) { + //鍒ゆ柇鏂囦欢鏄惁涓虹┖ + if (null == file || 0 == file.getSize()) { + log.error("涓婁紶minio鏂囦欢鏈嶅姟鍣ㄩ敊璇紝涓婁紶鏂囦欢涓虹┖"); + } + boolean exsit = exitsBucket(bucketName); + if (!exsit) { + log.error(bucketName + "-妗朵笉瀛樺湪"); + } + //鏂囦欢鍚� + String originalFilename = file.getOriginalFilename(); + //鏂扮殑鏂囦欢鍚� + String fileName = UUID.randomUUID().toString().replace("-", "") + 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) + .build(); + return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + } catch (Exception ex) { + log.error("涓婁紶瀵硅薄杩斿洖url寮傚父锛�" + ex.getMessage()); + } + return ""; + } + + /** + * 鍒犻櫎鏂囦欢 + * + * @param bucket 妗跺悕绉� + * @param objectName 瀵硅薄鍚嶇О + * @return boolean + */ + public static 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); + return true; + } + } catch (Exception e) { + log.error("removeObject", e); + } + return false; + } + + /** + * 鎵归噺鍒犻櫎鏂囦欢 + * + * @param objectNames 瀵硅薄鍚嶇О + * @return boolean + */ + public static boolean removeObjects(String bucket, List<String> objectNames) { + if (exitsBucket(bucket)) { + try { + List<DeleteObject> objects = new LinkedList<>(); + for (String str : objectNames) { + objects.add(new DeleteObject(str)); + } + RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build(); + Iterable<Result<DeleteError>> results = MinioClientSingleton.getMinioClient().removeObjects(removeObjectsArgs); + /*鍒犻櫎瀹岄亶鍘嗙粨鏋滐紝鍚﹀垯鍒犱笉鎺�*/ + for (Result<DeleteError> result : results) { + DeleteError error = result.get(); + log.error("Error in deleting object " + error.objectName() + "; " + error.message()); + } + + return true; + } catch (Exception ex) { + log.error("minio鎵归噺鍒犻櫎鏂囦欢寮傚父", ex.getMessage()); + } + } + return false; + } + + /** + * 鑾峰彇鍗曚釜妗朵腑鐨勬墍鏈夋枃浠跺璞″悕绉� + * + * @param bucket 妗跺悕绉� + * @return {@link List}<{@link String}> + */ + public static 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); + 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; + } + + /** + * 鑾峰彇鏌愪釜妗朵笅鏌愪釜瀵硅薄鐨刄RL + * + * @param bucket 妗跺悕绉� + * @param objectName 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�) + * @return + */ + public static String getBucketObjectUrl(String bucketName, String objectName) { + try { + if (!exitsBucket(bucketName)) { + return ""; + } + GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs + .builder() + .bucket(bucketName) + .object(objectName) + .build(); + return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + } catch (Exception ex) { + log.error("minio鑾峰彇瀵硅薄URL寮傚父" + ex.getMessage()); + } + return ""; + } + + /** + * 涓婁紶瀵硅薄-stream + * + * @param bucketName bucket鍚嶇О + * @param objectName 饨備欢鍚嶇О + * @param stream 饨備欢娴� + * @param size 饧も缉 + * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� + */ + public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { + try { + PutObjectArgs putObjectArgs = PutObjectArgs.builder() + .bucket(bucketName) + .object(objectName) + .stream(stream, size, -1) + .contentType(contextType) + .build(); + ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + return true; + } catch (Exception ex) { + log.error("minio涓婁紶鏂囦欢(閫氳繃stream)寮傚父" + ex.getMessage()); + return false; + } + } + + /** + * 涓婁紶瀵硅薄-File + * + * @param bucketName bucket鍚嶇О + * @param objectName 饨備欢鍚嶇О + * @param file 饨備欢 + * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� + */ + public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) { + try { + FileInputStream fileInputStream = new FileInputStream(file); + PutObjectArgs putObjectArgs = PutObjectArgs.builder() + .bucket(bucketName) + .object(objectName) + .stream(fileInputStream, file.length(), -1) + .contentType(contextType) + .build(); + ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + return true; + } catch (Exception ex) { + log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); + return false; + } + } + + /** + * 涓婁紶瀵硅薄-MultipartFile + * + * @param bucketName bucket鍚嶇О + * @param objectName 饨備欢鍚嶇О + * @param MultipartFile 饨備欢 + * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� + */ + 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; + } + InputStream inputStream = multipartFile.getInputStream(); + PutObjectArgs putObjectArgs = PutObjectArgs.builder() + .bucket(bucketName) + .object(objectName) + .stream(inputStream, multipartFile.getSize(), -1) + .contentType(contextType) + .build(); + ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + return true; + } catch (Exception ex) { + log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); + return false; + } + } + + /** + * 涓婁紶瀵硅薄,鐢╩ultipartFile鍚嶇О浣滀负瀵硅薄鍚� + * + * @param bucketName bucket鍚嶇О + * @param objectName 饨備欢鍚嶇О + * @param MultipartFile 饨備欢 + * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� + */ + public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) { + try { + if (multipartFile == null) { + log.error("涓婁紶鏂囦欢涓虹┖"); + return false; + } + String objectName = multipartFile.getOriginalFilename(); + InputStream inputStream = multipartFile.getInputStream(); + PutObjectArgs putObjectArgs = PutObjectArgs.builder() + .bucket(bucketName) + .object(objectName) + .stream(inputStream, multipartFile.getSize(), -1) + .contentType(contextType) + .build(); + MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + return true; + } catch (Exception ex) { + log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); + return false; + } + } + + /** + * 涓婁紶瀵硅薄-閫氳繃鏈湴璺緞 + * + * @param bulkName + * @param objectName + * @param localFilePathName + * @return + */ + public static boolean uploadObject(String bulkName, String objectName, String localFilePathName, String contextType) { + try { + if (!exitsBucket(bulkName)) { + log.debug(bulkName + "涓嶅瓨鍦�"); + return false; + } + File file = new File(localFilePathName); + if (!file.exists()) { + log.debug("鏂囦欢涓嶅瓨鍦�"); + return false; + } + UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder() + .bucket(bulkName) + .object(objectName) + .filename(localFilePathName) + .contentType(contextType) + .build(); + ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().uploadObject(uploadObjectArgs); + return true; + } catch (Exception e) { + log.error("minio upload object file error " + e.getMessage()); + return false; + } + } + /** + *@鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞� + *@鍙傛暟 [bucketName] + *@杩斿洖鍊� java.lang.Iterable<io.minio.Result<io.minio.messages.Item>> + *@鍒涘缓浜� 鍒樿嫃涔� + *@鍒涘缓鏃堕棿 2023/2/6 10:32 + *@淇敼浜哄拰鍏跺畠淇℃伅 + */ + public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) { + Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().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; + } +} \ No newline at end of file diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minioUtil/MinioUtil.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minioUtil/MinioUtil.java deleted file mode 100644 index eaa9734..0000000 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/util/minioUtil/MinioUtil.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.ruoyi.device.hiksdk.util.minioUtil; - -/** - * @ClassName: MinioUtil - * @Description: minio 宸ュ叿绫伙紝鎻愪緵涓婁紶銆佷笅杞芥柟娉� - * @Author: Administrator - * @Date: 2023骞�01鏈�28鏃� 13:28 - * @Version: 1.0 - **/ - -import io.minio.*; -import io.minio.http.Method; -import io.minio.messages.Item; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import java.io.File; -import java.io.InputStream; - - -@Slf4j(topic = "minio") -@Component -@RequiredArgsConstructor -public class MinioUtil { - - private final MinioClient minioClient; - - /** - * 鍒ゆ柇bulk妗舵槸鍚﹀瓨鍦� - * - * @param bulkName - * @return - */ - private boolean isBuckExist(String bulkName) { - try { - return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bulkName).build()); - } catch (Exception e) { - log.error("bulkname is not exist,error " + e.getMessage()); - return false; - } - } - - /** - * 涓婁紶瀵硅薄-閫氳繃鏈湴璺緞 - * - * @param bulkName - * @param objectName - * @param localFilePathName - * @return - */ - public boolean uploadObject(String bulkName, String objectName, String localFilePathName) { - try { - if (!isBuckExist(bulkName)) { - log.debug(bulkName + "涓嶅瓨鍦�"); - return false; - } - File file = new File(localFilePathName); - if (!file.exists()) { - log.debug("鏂囦欢涓嶅瓨鍦�"); - return false; - } - ObjectWriteResponse objectWriteResponse = minioClient.uploadObject(UploadObjectArgs.builder().bucket(bulkName).object(objectName).filename(localFilePathName).build()); - return true; - } catch (Exception e) { - log.error("minio upload object file error " + e.getMessage()); - return false; - } - } - - /** - * 涓嬭浇瀵硅薄 - * - * @param bulkName - * @param objectName - * @param localFilePathName - * @return - */ - public boolean downloadObject(String bulkName, String objectName, String localFilePathName) { - if (isBuckExist(bulkName)) { - try { - minioClient.downloadObject(DownloadObjectArgs.builder().bucket(bulkName).object(objectName).filename(localFilePathName).build()); - return true; - } catch (Exception e) { - log.error("minio download object file error " + e.getMessage()); - return false; - } - - } else { - return false; - } - } - - /** - * 鍒犻櫎瀵硅薄 - * - * @param bulkName - * @param objectName - * @return - */ - public boolean deleteObject(String bulkName, String objectName) { - if (isBuckExist(bulkName)) { - try { - minioClient.removeObject(RemoveObjectArgs.builder().bucket(bulkName).object(objectName).build()); - return true; - } catch (Exception e) { - log.error("minio delete object file error " + e.getMessage()); - return false; - } - } else { - return false; - } - } - - - /** - * 鐢熸垚涓�涓狦ET璇锋眰鐨勫垎浜摼鎺ャ�� - * 澶辨晥鏃堕棿榛樿鏄�7澶┿�� - * - * @param bucketName 瀛樺偍妗跺悕绉� - * @param objectName 瀛樺偍妗堕噷鐨勫璞″悕绉� - * @param expires 澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ - * @return - */ - public String presignedGetObject(String bucketName, String objectName, Integer expires) { - boolean bucketExists = isBuckExist(bucketName); - String url = ""; - if (bucketExists) { - try { - if (expires == null) { - expires = 604800; - } - GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder() - .method(Method.GET) - .bucket(bucketName) - .object(objectName) -// .expiry(expires) - .build(); - url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); - // log.info("*******url:{}", url); - } catch (Exception e) { - log.info("presigned get object fail:{}", e); - } - } - return url; - } - - /** - * 涓婁紶饨備欢 - * - * @param bucketName bucket鍚嶇О - * @param objectName 饨備欢鍚嶇О - * @param stream 饨備欢娴� - * @param size 饧も缉 - * @param contextType 绫诲瀷 - * @throws Exception https://docs.minio.io/cn/java-client-api-reference.html#putObject - */ - public boolean putObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { - - try { - ObjectWriteResponse objectWriteResponse = minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(stream, size, -1).contentType(contextType).build()); - return true; - } catch (Exception ex) { - log.error(ex.getMessage()); - return false; - } - } - - - /** - *@鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞� - *@鍙傛暟 [bucketName] - *@杩斿洖鍊� java.lang.Iterable<io.minio.Result<io.minio.messages.Item>> - *@鍒涘缓浜� 鍒樿嫃涔� - *@鍒涘缓鏃堕棿 2023/2/6 10:32 - *@淇敼浜哄拰鍏跺畠淇℃伅 - */ - public Iterable<Result<Item>> getObjectsByBucket(String bucketName){ - - Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder() - .bucket(bucketName) - .recursive(true) - .build()); - return listObjects; - } -} - diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java index 015c997..b78e9b7 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java @@ -1,11 +1,11 @@ package com.ruoyi.quartz.task; -import com.ruoyi.device.hiksdk.util.minioUtil.MinioUtil; +import com.ruoyi.device.hiksdk.util.minio.MinioUtils; import io.minio.Result; import io.minio.messages.Item; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import javax.annotation.Resource; + import java.text.SimpleDateFormat; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -21,8 +21,6 @@ @Component("MinioTask") @Slf4j(topic = "minio") public class MinioTask { - @Resource - MinioUtil minioUtil; public void delHistoryTask(Integer saveDays) { log.info("鎵ц鍘嗗彶鏁版嵁鍒犻櫎"); @@ -32,7 +30,7 @@ buckets.add("pic"); buckets.add("record"); for (String name:buckets) { - Iterable<Result<Item>> listObjectsPic = minioUtil.getObjectsByBucket(name); + Iterable<Result<Item>> listObjectsPic = MinioUtils.getObjectsByBucket(name); for (Result<Item> result : listObjectsPic) { Item item = result.get(); log.info(item.objectName() + "鍒涘缓鏃堕棿锛�" + item.lastModified()); @@ -52,7 +50,7 @@ if (objectTime.compareTo(nowTime) < 0) { log.info("objectTime 鏃堕棿鍦� nowTime 涔嬪墠"); - boolean b = minioUtil.deleteObject(name, item.objectName()); + boolean b = MinioUtils.removeObject(name, item.objectName()); if(b) { log.info("鍒犻櫎杩囨湡鏁版嵁锛�"+ item.objectName()+"---"+item.lastModified()); -- Gitblit v1.9.3