From 4c6c570d49cd45091b9664c29ec878153db920bd Mon Sep 17 00:00:00 2001
From: xuxin <840198532@qq.com>
Date: Mon, 10 Nov 2025 16:46:21 +0800
Subject: [PATCH] =?UTF-8?q?=E8=8B=8D=E7=A9=B9=E5=A4=96=E5=8D=96--=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E8=8F=9C=E5=93=81-=E6=96=87=E4=BB=B6=E4=B8=8A?=
=?UTF-8?q?=E4=BC=A0=E5=8A=9F=E8=83=BD=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../com/sky/properties/AliOssProperties.java | 2 +-
.../properties/InmindAliOSSProperties.java | 23 ++++++
.../java/com/sky/utils/InmindAliOSSUtils.java | 70 +++++++++++++++++++
.../java/com/sky/aspect/AutoFillAspect.java | 4 +-
.../java/com/sky/config/OssConfiguration.java | 21 ++++++
.../controller/admin/CommonController.java | 41 +++++++++++
.../src/main/resources/application-dev.yml | 4 ++
sky-server/src/main/resources/application.yml | 6 +-
9 files changed, 168 insertions(+), 5 deletions(-)
create mode 100644 sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java
create mode 100644 sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java
create mode 100644 sky-server/src/main/java/com/sky/config/OssConfiguration.java
create mode 100644 sky-server/src/main/java/com/sky/controller/admin/CommonController.java
diff --git a/pom.xml b/pom.xml
index 96d60aa..d99c88c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
2.6
1.2.1
1.3.0
- 3.10.2
+ 3.17.4
3.0.2
1.9.4
0.9.1
diff --git a/sky-common/src/main/java/com/sky/properties/AliOssProperties.java b/sky-common/src/main/java/com/sky/properties/AliOssProperties.java
index 4e6c625..a75a69f 100644
--- a/sky-common/src/main/java/com/sky/properties/AliOssProperties.java
+++ b/sky-common/src/main/java/com/sky/properties/AliOssProperties.java
@@ -5,7 +5,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
-@ConfigurationProperties(prefix = "sky.alioss")
+@ConfigurationProperties(prefix = "sky.alioss1")
@Data
public class AliOssProperties {
diff --git a/sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java b/sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java
new file mode 100644
index 0000000..bd1c90f
--- /dev/null
+++ b/sky-common/src/main/java/com/sky/properties/InmindAliOSSProperties.java
@@ -0,0 +1,23 @@
+package com.sky.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * ClassName: AliOSSProperties
+ * Package: com.inmind.utils
+ * Description:
+ *
+ * @Author xuxin
+ * @Create 5/14 15:10
+ * @Version 1.0
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "sky.alioss")
+public class InmindAliOSSProperties {
+ private String endpoint;
+ private String bucketName;
+ private String region;
+}
diff --git a/sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java b/sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java
new file mode 100644
index 0000000..a981e42
--- /dev/null
+++ b/sky-common/src/main/java/com/sky/utils/InmindAliOSSUtils.java
@@ -0,0 +1,70 @@
+package com.sky.utils;
+
+import com.aliyun.oss.ClientBuilderConfiguration;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.common.auth.CredentialsProviderFactory;
+import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
+import com.aliyun.oss.common.comm.SignVersion;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
+import com.aliyuncs.exceptions.ClientException;
+import com.sky.properties.InmindAliOSSProperties;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.UUID;
+
+/**
+ * 阿里云 OSS 工具类
+ */
+@Data
+@AllArgsConstructor
+//@Component
+public class InmindAliOSSUtils {
+
+ /*@Value("${aliyun.oss.endpoint}")
+ private String endpoint;
+ @Value("${aliyun.oss.bucketName}")
+ private String bucketName;
+ @Value("${aliyun.oss.region}")
+ private String region ;*/
+ InmindAliOSSProperties aliOSSProperties;
+
+ /**
+ * 实现上传图片到OSS
+ */
+ public String upload(MultipartFile file) throws IOException, ClientException {
+ // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
+ EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
+ // 获取上传的文件的输入流
+ InputStream inputStream = file.getInputStream();
+ // 避免文件覆盖
+ String originalFilename = file.getOriginalFilename();
+ String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
+ //上传文件到 OSS
+ // 创建OSSClient实例。
+ ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
+ clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
+ OSS ossClient = OSSClientBuilder.create()
+ .endpoint(aliOSSProperties.getEndpoint())
+ .credentialsProvider(credentialsProvider)
+ .clientConfiguration(clientBuilderConfiguration)
+ .region(aliOSSProperties.getRegion())
+ .build();
+ // 创建PutObjectRequest对象。
+ PutObjectRequest putObjectRequest = new PutObjectRequest(aliOSSProperties.getBucketName(), fileName, inputStream);
+ PutObjectResult result = ossClient.putObject(putObjectRequest);
+ //文件访问路径
+ String url = aliOSSProperties.getEndpoint().split("//")[0] + "//" + aliOSSProperties.getBucketName() + "." + aliOSSProperties.getEndpoint().split("//")[1] + "/" + fileName;
+ // 关闭ossClient
+ ossClient.shutdown();
+ return url;// 把上传到oss的路径返回
+ }
+
+}
diff --git a/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java b/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java
index 4111967..f33fa10 100644
--- a/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java
+++ b/sky-server/src/main/java/com/sky/aspect/AutoFillAspect.java
@@ -58,13 +58,13 @@ public class AutoFillAspect {
Method setUpdateUser = arg.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);
setUpdateUser.invoke(arg,currentId);
- } else {
+ }
//update
Method setUpdateTime = arg.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);
setUpdateTime.invoke(arg,now);
Method setUpdateUser = arg.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);
setUpdateUser.invoke(arg,currentId);
- }
+
} catch (Exception e) {
throw new RuntimeException(e);
}
diff --git a/sky-server/src/main/java/com/sky/config/OssConfiguration.java b/sky-server/src/main/java/com/sky/config/OssConfiguration.java
new file mode 100644
index 0000000..61270df
--- /dev/null
+++ b/sky-server/src/main/java/com/sky/config/OssConfiguration.java
@@ -0,0 +1,21 @@
+package com.sky.config;
+
+import com.sky.properties.InmindAliOSSProperties;
+import com.sky.utils.InmindAliOSSUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 为sky-server模块,注册OSS工具类对象到sprong容器中
+ */
+@Configuration
+@Slf4j
+public class OssConfiguration {
+
+ @Bean
+ public InmindAliOSSUtils inmindAliOSSUtils(InmindAliOSSProperties aliOSSProperties){
+ log.info("开始创建阿里云文件上传工具类对象到sprong容器中...,{}",aliOSSProperties);
+ return new InmindAliOSSUtils(aliOSSProperties);
+ }
+}
diff --git a/sky-server/src/main/java/com/sky/controller/admin/CommonController.java b/sky-server/src/main/java/com/sky/controller/admin/CommonController.java
new file mode 100644
index 0000000..01b0525
--- /dev/null
+++ b/sky-server/src/main/java/com/sky/controller/admin/CommonController.java
@@ -0,0 +1,41 @@
+package com.sky.controller.admin;
+
+import com.aliyuncs.exceptions.ClientException;
+import com.sky.result.Result;
+import com.sky.utils.InmindAliOSSUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+@RestController
+@Slf4j
+@Api(tags = "通用接口")
+@RequestMapping("/admin/common")
+public class CommonController {
+
+ @Autowired
+ private InmindAliOSSUtils inmindAliOSSUtils;
+
+
+ @PostMapping("/upload")
+ @ApiOperation("文件上传")
+ public Result upload(MultipartFile file) {
+ log.info("文件上传:{}",file);
+ String uploadUrl = null;
+ try {
+ uploadUrl = inmindAliOSSUtils.upload(file);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ } catch (ClientException e) {
+ throw new RuntimeException(e);
+ }
+ return Result.success(uploadUrl);
+ }
+}
diff --git a/sky-server/src/main/resources/application-dev.yml b/sky-server/src/main/resources/application-dev.yml
index a66a951..134d8a8 100644
--- a/sky-server/src/main/resources/application-dev.yml
+++ b/sky-server/src/main/resources/application-dev.yml
@@ -6,3 +6,7 @@ sky:
database: sky_take_out2
username: root
password: 1234
+ alioss:
+ endpoint: https://oss-cn-shanghai.aliyuncs.com
+ bucket-name: inmind-test
+ region: cn-shanghai
diff --git a/sky-server/src/main/resources/application.yml b/sky-server/src/main/resources/application.yml
index bc61ce1..b682adc 100644
--- a/sky-server/src/main/resources/application.yml
+++ b/sky-server/src/main/resources/application.yml
@@ -3,7 +3,7 @@ server:
spring:
profiles:
- active: dev
+ active: dev #程序的运行环境:开发环境
main:
allow-circular-references: true
datasource:
@@ -37,3 +37,7 @@ sky:
admin-ttl: 72000000
# 设置前端传递过来的令牌名称
admin-token-name: token
+ alioss:
+ endpoint: ${sky.alioss.endpoint}
+ bucket-name: ${sky.alioss.bucket-name}
+ region: ${sky.alioss.region}