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