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