From 02088e66b8474128e72ef282e07e1a0701a103bd Mon Sep 17 00:00:00 2001
From: whj <1070107765@qq.com>
Date: 星期一, 11 七月 2022 16:01:38 +0800
Subject: [PATCH] 整合minio

---
 src/main/resources/application.properties                       |   11 +++
 src/main/java/com/example/jz/service/impl/MinIOServiceImpl.java |   53 +++++++++++++++++
 src/main/java/com/example/jz/service/MinIOService.java          |    5 +
 src/main/java/com/example/jz/controller/MinIOController.java    |   21 +++++++
 src/test/java/com/example/jz/JzApplicationTests.java            |    6 ++
 pom.xml                                                         |    5 +
 src/main/java/com/example/jz/config/MinIOConfig.java            |   30 ++++++++++
 7 files changed, 129 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2ae1435..8b641cf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,11 @@
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>3.3.2</version>
         </dependency>
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>7.1.0</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/com/example/jz/config/MinIOConfig.java b/src/main/java/com/example/jz/config/MinIOConfig.java
new file mode 100644
index 0000000..fc9b2ad
--- /dev/null
+++ b/src/main/java/com/example/jz/config/MinIOConfig.java
@@ -0,0 +1,30 @@
+package com.example.jz.config;
+
+import io.minio.MinioClient;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import okhttp3.HttpUrl;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+@Data
+@EqualsAndHashCode
+@Accessors(chain = true)
+@Component
+public class MinIOConfig {
+    @Value("${minio.address}")
+    private String address;
+    @Value("${minio.accessKey}")
+    private String accessKey;
+    @Value("${minio.secretKey}")
+    private String secretKey;
+    @Value("${minio.bucketName}")
+    private String bucketName;
+
+    @Bean
+    public  MinioClient minioClient(){
+        return MinioClient.builder().endpoint(address).credentials(accessKey, secretKey).build();
+    }
+}
diff --git a/src/main/java/com/example/jz/controller/MinIOController.java b/src/main/java/com/example/jz/controller/MinIOController.java
new file mode 100644
index 0000000..e640f40
--- /dev/null
+++ b/src/main/java/com/example/jz/controller/MinIOController.java
@@ -0,0 +1,21 @@
+package com.example.jz.controller;
+
+import com.example.jz.service.MinIOService;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/minio")
+public class MinIOController {
+    @Resource
+    private MinIOService minIOService;
+
+    @RequestMapping(method = RequestMethod.GET,value = "/{fileName}")
+    public String getUrl(@PathVariable String fileName){
+        return "";
+    }
+}
diff --git a/src/main/java/com/example/jz/service/MinIOService.java b/src/main/java/com/example/jz/service/MinIOService.java
new file mode 100644
index 0000000..2182b05
--- /dev/null
+++ b/src/main/java/com/example/jz/service/MinIOService.java
@@ -0,0 +1,5 @@
+package com.example.jz.service;
+
+public interface MinIOService {
+    public String getPreviewFileUrl(String fileName);
+}
diff --git a/src/main/java/com/example/jz/service/impl/MinIOServiceImpl.java b/src/main/java/com/example/jz/service/impl/MinIOServiceImpl.java
new file mode 100644
index 0000000..0d2ea6a
--- /dev/null
+++ b/src/main/java/com/example/jz/service/impl/MinIOServiceImpl.java
@@ -0,0 +1,53 @@
+package com.example.jz.service.impl;
+
+import com.example.jz.config.MinIOConfig;
+import com.example.jz.service.MinIOService;
+import io.minio.GetPresignedObjectUrlArgs;
+import io.minio.MinioClient;
+import io.minio.errors.*;
+import io.minio.http.Method;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class MinIOServiceImpl implements MinIOService {
+    @Autowired
+    MinioClient minioClient;
+    @Autowired
+    MinIOConfig minIOConfig;
+    @Override
+    public String getPreviewFileUrl(String fileName){
+        String res = null;
+        try {
+            res = minioClient.presignedGetObject(minIOConfig.getBucketName(), fileName);
+        } catch (ErrorResponseException e) {
+            throw new RuntimeException(e);
+        } catch (InsufficientDataException e) {
+            throw new RuntimeException(e);
+        } catch (InternalException e) {
+            throw new RuntimeException(e);
+        } catch (InvalidBucketNameException e) {
+            throw new RuntimeException(e);
+        } catch (InvalidExpiresRangeException e) {
+            throw new RuntimeException(e);
+        } catch (InvalidKeyException e) {
+            throw new RuntimeException(e);
+        } catch (InvalidResponseException e) {
+            throw new RuntimeException(e);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } catch (NoSuchAlgorithmException e) {
+            throw new RuntimeException(e);
+        } catch (ServerException e) {
+            throw new RuntimeException(e);
+        } catch (XmlParserException e) {
+            throw new RuntimeException(e);
+        }
+        return  res;
+    }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index de89f95..a77f810 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,7 +1,6 @@
 ### web
 server.port=8080
 
-
 ###  datasource
 #test
 spring.datasource.url=jdbc:mysql://140.143.152.226:3306/job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
@@ -19,4 +18,12 @@
 spring.datasource.hikari.max-lifetime=900000
 spring.datasource.hikari.connection-timeout=10000
 spring.datasource.hikari.connection-test-query=SELECT 1
-spring.datasource.hikari.validation-timeout=1000
\ No newline at end of file
+spring.datasource.hikari.validation-timeout=1000
+
+# ???????
+spring.servlet.multipart.max-file-size=50MB
+# minio???????
+minio.address=http://119.28.5.249:9000
+minio.accessKey=minioadmin
+minio.secretKey=minioadmin
+minio.bucketName=img
diff --git a/src/test/java/com/example/jz/JzApplicationTests.java b/src/test/java/com/example/jz/JzApplicationTests.java
index 1e2ca8a..9f2c6fa 100644
--- a/src/test/java/com/example/jz/JzApplicationTests.java
+++ b/src/test/java/com/example/jz/JzApplicationTests.java
@@ -1,13 +1,19 @@
 package com.example.jz;
 
+import com.example.jz.config.MinIOConfig;
+import com.example.jz.service.MinIOService;
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
 class JzApplicationTests {
+    @Autowired
+    MinIOService minIOService;
 
     @Test
     void contextLoads() {
+        System.out.println(minIOService.getPreviewFileUrl("2fff006f3082f00e26d496dc0a47c624.png"));
     }
 
 }

--
Gitblit v1.8.0