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