From 3d1e51824251c29b70753989efe09c3adc3e56b4 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 18 六月 2024 08:43:20 +0800
Subject: [PATCH] 对接天翼云OBS

---
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java   |    3 +
 ruoyi-api/ruoyi-api-system/lib/aws-java-sdk-s3.jar                                        |    0 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/StateCloudObsUtil.java |   76 ++++++++++++++++++++++++++++++++++++++
 ruoyi-api/ruoyi-api-system/pom.xml                                                        |    8 ++++
 4 files changed, 86 insertions(+), 1 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/lib/aws-java-sdk-s3.jar b/ruoyi-api/ruoyi-api-system/lib/aws-java-sdk-s3.jar
new file mode 100644
index 0000000..e4254fb
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/lib/aws-java-sdk-s3.jar
Binary files differ
diff --git a/ruoyi-api/ruoyi-api-system/pom.xml b/ruoyi-api/ruoyi-api-system/pom.xml
index dba587c..1c3f322 100644
--- a/ruoyi-api/ruoyi-api-system/pom.xml
+++ b/ruoyi-api/ruoyi-api-system/pom.xml
@@ -39,6 +39,14 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
+        
+        <dependency>
+            <groupId>aws-java-sdk-s3</groupId>
+            <artifactId>aws</artifactId>
+            <version>1.0.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/lib/aws-java-sdk-s3.jar</systemPath>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/StateCloudObsUtil.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/StateCloudObsUtil.java
new file mode 100644
index 0000000..84a99b5
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/util/StateCloudObsUtil.java
@@ -0,0 +1,76 @@
+package com.ruoyi.system.api.util;
+
+import com.amazonaws.ClientConfiguration;
+import com.amazonaws.Protocol;
+import com.amazonaws.auth.AWSCredentials;
+import com.amazonaws.auth.AWSStaticCredentialsProvider;
+import com.amazonaws.auth.BasicAWSCredentials;
+import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.AmazonS3ClientBuilder;
+import com.amazonaws.services.s3.model.ObjectMetadata;
+import com.amazonaws.services.s3.model.PutObjectRequest;
+import com.amazonaws.services.s3.model.PutObjectResult;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.UUID;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 天翼云OBS 工具类
+ *
+ * @author mitao
+ * @date 2024/6/17
+ */
+public class StateCloudObsUtil {
+
+    public static String ACCESS_KEY = "MZTCFDOW5SGEC88GNMBV";
+    public static String SECRET_KEY = "b3HHfKEiEHjyo4ozzN4ZuaveCKvoFUAOPoba44ix";
+    public static String END_POINT = "obs.cn-sccd1.ctyun.cn";
+    public static String BUCKET = "jyzx-obs";
+    public static String DOMAIN = "https://" + BUCKET + "." + END_POINT + "/";
+
+
+    public static String uploadFile(MultipartFile file) {
+        String originalFilename = file.getOriginalFilename();
+        InputStream inputStream = null;
+        try {
+            inputStream = file.getInputStream();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        String fileName;
+        AmazonS3 s3client = null;
+        try {
+            AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY,
+                    SECRET_KEY);
+            ClientConfiguration awsClientConfig = new ClientConfiguration();
+            awsClientConfig.setSignerOverride("AWSS3V4SignerType");
+            awsClientConfig.setProtocol(Protocol.HTTP);
+            s3client = AmazonS3ClientBuilder.standard()
+                    .withCredentials(new AWSStaticCredentialsProvider(credentials))
+                    .withClientConfiguration(awsClientConfig)
+                    .withEndpointConfiguration(new EndpointConfiguration(END_POINT, ""))
+                    .disableChunkedEncoding()
+                    .enablePathStyleAccess()
+                    .build();
+            System.out.print("=====connect success=====\n");
+            // 上传 object
+            ObjectMetadata objectMetadata = new ObjectMetadata();
+            fileName =
+                    UUID.randomUUID().toString().replaceAll("-", "") + originalFilename.subSequence(
+                            originalFilename.lastIndexOf("."), originalFilename.length());
+            PutObjectRequest request = new PutObjectRequest(BUCKET, fileName, inputStream,
+                    objectMetadata);
+            PutObjectResult result = s3client.putObject(request);
+            System.out.format("Etag: %s, versionId: %s\n", result.getETag(),
+                    result.getVersionId());
+            System.out.print("=====request success=====\n");
+            return DOMAIN + fileName;
+        } catch (Exception e) {
+            System.out.print("=====request fail=====\n");
+            System.out.print(e.getMessage());
+        }
+        return null;
+    }
+}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
index 0e4578f..4edc796 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
@@ -5,6 +5,7 @@
 import com.ruoyi.file.service.ISysFileService;
 import com.ruoyi.system.api.domain.SysFile;
 import com.ruoyi.system.api.util.HuaWeiOBSUtil;
+import com.ruoyi.system.api.util.StateCloudObsUtil;
 import io.swagger.annotations.ApiOperation;
 import java.util.ArrayList;
 import java.util.List;
@@ -76,7 +77,7 @@
         List<String> urls = new ArrayList<>();
         try {
             for (MultipartFile multipartFile : file) {
-                String url = HuaWeiOBSUtil.obsUpload(multipartFile);
+                String url = StateCloudObsUtil.uploadFile(multipartFile);
                 urls.add(url);
             }
             // 上传并返回访问地址

--
Gitblit v1.7.1