From 773c502d0b2f2732f858946a32f41bf13e1bcdff Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 周三, 31 5月 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();
+ }
+
+ /**
+ * 生成一个GET请求的带有失效时间的分享链接。
+ * 失效时间默认是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;
+ }
+
+ /**
+ * 获取某个桶下某个对象的URL
+ *
+ * @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;
+ }
+ }
+
+ /**
+ * 上传对象,用multipartFile名称作为对象名
+ *
+ * @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;
- }
- }
-
-
- /**
- * 生成一个GET请求的分享链接。
- * 失效时间默认是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